2010-03-30 103 views
2

如您所知,OAuth可以支持RSA-SHA1簽名。我有一個OAuthSignature接口,其具有以下的方法在Java中實現RSA-SHA1簽名算法(創建用於OAuth RSA-SHA1簽名的私鑰)

public String sign(String data, String consumerSecret, String tokenSecret) throws GeneralSecurityException; 

我成功地實現和測試HMAC-SHA1簽名(其OAuth的支持),以及明文「簽名」。

我已搜查谷歌和我要創建一個私有密鑰,如果我需要使用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](瓊森,J. 和B. Kaliski,「公鑰 加密標準(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簽名的參考。

回答

1

什麼API是OAuthSignature接口?對於RSA簽名,是否有必要使用tokenSecret參數?

+0

'OAuthSignature'是我自己的界面。並且您是正確的,使用Google示例(http://code.google.com/apis/gdata/docs/auth/oauth.html)似乎它不需要令牌祕密。 – 2010-03-30 13:50:39