Реализация алгоритма подписи RSA-SHA1 в Java (создание личного ключа для использования с подписью OAuth RSA-SHA1) - PullRequest
3 голосов
/ 30 марта 2010

Как вы знаете, 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.

Ответы [ 2 ]

1 голос
/ 28 апреля 2013

Кажется, RSA-SHA1 не нуждается в секрете потребителя, вы можете сослаться на джерси здесь https://svn.java.net/svn/jersey~svn/trunk/jersey/contribs/jersey-oauth/oauth-signature/src/main/java/, класс com.sun.jersey.oauth.signature.RSA_SHA1.

1 голос
/ 30 марта 2010

От какого API OAuthSignature интерфейс? Возможно ли, что параметр tokenSecret не нужен для подписей RSA?

...