3

ご存知のように、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キー(key = ConsumerSecret&tokenSecret)を取得して、署名PrivateKeyで使用するを作成するにはどうすればよいですか?SHA1withRSA

ありがとう


OAuthコアから

9.3。RSA-SHA1

RSA-SHA1署名方式は、[RFC3447]で定義されているRSASSA-PKCS1-v1_5署名アルゴリズムを使用します(Jonsson、J.およびB. Kaliski、「公開鍵暗号化標準(PKCS)#1:RSA暗号化;仕様バージョン2.1、 」。)セクション8.2(より単純にPKCS#1として知られています)、EMSA-PKCS1-v1_5のハッシュ関数としてSHA-1を使用します。コンシューマーは、この仕様の範囲を超える方法で、検証済みの方法でRSA公開鍵をサービスプロバイダーに提供したと想定されます。

そして、私は現在、RSA-SHA1署名を行うための参照としてこれ( http://code.google.com/apis/gdata/docs/auth/oauth.html )を使用しています。

4

2 に答える 2

1

インターフェイスはどのAPIOAuthSignatureからのものですか?tokenSecretRSA署名にパラメータが不要である可能性はありますか?

于 2010-03-30T13:02:51.737 に答える
1

RSA-SHA1 はコンシューマー シークレットを必要としないようです。Jersey の実装はこちらで参照できますhttps://svn.java.net/svn/jersey~svn/trunk/jersey/contribs/jersey-oauth/oauth-signature/ src/main/java/、クラス com.sun.jersey.oauth.signature.RSA_SHA1。

于 2013-04-28T14:38:23.860 に答える