La mise en œuvre du RSA-SHA1 signature de l'algorithme en Java (création d'une clé privée pour une utilisation avec OAuth RSA-SHA1 signature)
Comme vous le savez, OAuth peut soutenir RSA-SHA1 Signature. J'ai un OAuthSignature
interface qui a la méthode suivante
public String sign(String data, String consumerSecret, String tokenSecret) throws GeneralSecurityException;
J'ai réussi a mis en œuvre et testé HMAC-SHA1 Signature (qui prend en charge le protocole OAuth) ainsi que le TEXTE "signature".
J'ai cherché sur google et j'ai créer une clé privée si j'ai besoin d'utiliser SHA1withRSA
signature: Exemple de code:
/**
* 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();
}
Maintenant, Comment puis-je prendre le OAuth clé (qui est la clé = consumerSecret&tokenSecret) et de créer un PrivateKey
à utiliser avec SHA1withRSA
signature?
Grâce
De OAuth Core
9.3. RSA-SHA1
Le RSA-SHA1 signature méthode utilise l'
RSASSA-PKCS1-v1_5 de l'algorithme de signature
comme défini dans [RFC3447] (Jonsson, J.
et B. Kaliski, “à Clé Publique
Normes de cryptographie (PKCS) #1: RSA
La Cryptographie; Les Spécifications De La Version
2.1,” .) la section 8.2 (plus simplement connu comme PKCS#1), à l'aide de l'algorithme SHA-1 comme l'
fonction de hachage pour EMSA-PKCS1-v1_5. Il
suppose que le Consommateur a
pourvu que sa clé publique RSA dans un
vérifié chemin vers le Fournisseur de Service,
dans une manière qui est au-delà de la portée
de cette spécification.
Et je suis maintenant en utilisant cette (http://code.google.com/apis/gdata/docs/auth/oauth.html) comme référence pour faire RSA-SHA1 signature.
Vous devez vous connecter pour publier un commentaire.
Ce que l'API est la
OAuthSignature
de l'interface? Est-il possible que letokenSecret
paramètre n'est pas nécessaire pour les signatures RSA?OAuthSignature
est ma propre interface. Et vous avez raison, l'Utilisation de Google par exemple (code.google.com/apis/gdata/docs/auth/oauth.html), Il semble qu'il ne nécessite pas de Jeton Secret.Semble que le RSA-SHA1 n'a pas besoin du consommateur secret, vous pouvez consulter le Maillot de mettre en œuvre ici https://svn.java.net/svn/jersey~svn/trunk/jersey/contribs/jersey-oauth/oauth-signature/src/main/java/, la classe com.soleil.jersey.oauth.la signature.RSA_SHA1.