Как вы знаете, OAuth может поддерживать подпись RSA-SHA1. У меня есть OAuthSignature
интерфейс, который имеет следующий метод
public String sign(String data, String consumerSecret, String tokenSecret) throws GeneralSecurityException;
Я успешно внедрил и протестировал подпись HMAC-SHA1 (которую поддерживает OAuth), а также «подпись» PLAINTEXT.
Я искал в Google, и мне нужно создать закрытый ключ, если мне нужно использовать SHA1withRSA
подпись: Пример кода:
/**
* Signs the data with the given key and the provided algorithm.
*/
private static byte[] sign(PrivateKey key,
String data)
throws GeneralSecurityException {
Signature signature = Signature.getInstance("SHA1withRSA");
signature.initSign(key);
signature.update(data.getBytes());
return signature.sign();
}
Теперь, как я могу взять ключ OAuth (который является ключом = consumerSecret & tokenSecret) и создать PrivateKey
для использования с SHA1withRSA
подписью?
Спасибо
С OAuth Core
9,3. RSA-SHA1
В методе подписи RSA-SHA1 используется
RSASSA-PKCS1-v1_5 алгоритм подписи
как определено в [RFC3447] (Jonsson, J.
и Б. Калиски, «Открытый ключ»
Стандарты криптографии (PKCS) # 1: RSA
криптография; Технические характеристики Версия
2.1, ».) Раздел 8.2 (более просто известный как PKCS # 1), используя SHA-1 в качестве
хеш-функция для EMSA-PKCS1-v1_5. Это
Предполагается, что Потребитель имеет
предоставил свой открытый ключ RSA в
проверенный путь к поставщику услуг,
таким образом, что выходит за рамки
этой спецификации.
И я сейчас использую это (http://code.google.com/apis/gdata/docs/auth/oauth.html) в качестве ссылки для выполнения подписи RSA-SHA1.