1b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien/*
2b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien * Copyright 2007 Netflix, Inc.
3b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien *
4b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien * Licensed under the Apache License, Version 2.0 (the "License");
5b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien * you may not use this file except in compliance with the License.
6b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien * You may obtain a copy of the License at
7b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien *
8b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien *     http://www.apache.org/licenses/LICENSE-2.0
9b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien *
10b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien * Unless required by applicable law or agreed to in writing, software
11b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien * distributed under the License is distributed on an "AS IS" BASIS,
12b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien * See the License for the specific language governing permissions and
14b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien * limitations under the License.
15b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien */
16b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien
17b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembienpackage net.oauth.signature;
18b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien
19b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembienimport net.oauth.OAuth;
20b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembienimport net.oauth.OAuthException;
21b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien
22b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien/**
23b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien * @author John Kristian
24b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien * @hide
25b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien */
26b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembienclass PLAINTEXT extends OAuthSignatureMethod {
27b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien
28b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien    @Override
29b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien    public String getSignature(String baseString) {
30b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien        return getSignature();
31b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien    }
32b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien
33b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien    @Override
34b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien    protected boolean isValid(String signature, String baseString)
35b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien            throws OAuthException {
36b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien        return signature.equals(getSignature());
37b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien    }
38b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien
39b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien    private synchronized String getSignature() {
40b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien        if (signature == null) {
41b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien            signature = OAuth.percentEncode(getConsumerSecret()) + '&'
42b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien                    + OAuth.percentEncode(getTokenSecret());
43b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien        }
44b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien        return signature;
45b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien    }
46b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien
47b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien    private String signature = null;
48b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien
49b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien    @Override
50b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien    public void setConsumerSecret(String consumerSecret) {
51b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien        synchronized (this) {
52b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien            signature = null;
53b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien        }
54b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien        super.setConsumerSecret(consumerSecret);
55b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien    }
56b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien
57b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien    @Override
58b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien    public void setTokenSecret(String tokenSecret) {
59b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien        synchronized (this) {
60b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien            signature = null;
61b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien        }
62b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien        super.setTokenSecret(tokenSecret);
63b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien    }
64b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien
65b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien}
66