2011-07-29 16 views
2

私のアプリでは、SHA1とRSAを使用してProbabilistic Signature Scheme(PSS)で署名されたファイルのデジタル署名を確認しています。署名はBouncyCastleの助けを借りてJ2SEで作成されます。Android 2.3以降のPSS署名検証に失敗しました

Androidアプリでは、この確認はこれまでのところうまく機能しました(例:2.1,2.2)。 Android 2.3デバイス/シミュレータでアプリをテストするとき、私はNoSuchAlgorithmExceptionを受け取ります。

NoSuchAlgorithmException: Signature SHA1withRSA/PSS implementation not found 

私は署名を検証するために使用し、関連するコードは次のとおりです。

Signature signature = Signature.getInstance("SHA1withRSA/PSS", "BC"); 
signature.setParameter(new PSSParameterSpec(64)); 
signature.initVerify(thePublicKey); 
signature.update(theMessage.getBytes()); 
boolean signatureIsValid = signature.verify(theSignature); 

なぜアルゴリズム「SHA1withRSA/PSSは、」「BC」プロバイダから削除されたアンドロイド2.2、以来、何が起こりましたか?

他の人がいますか(すべてのAndroidバージョンでうまく機能します)?

ありがとうございました!

答えて

0

私は同じ問題に直面しています。 Bouncy CastleをAndroidに移植することで、それだけの方法ですか?

2

私がPSS Signatureを利用できるようにした唯一の方法は、私の署名プロバイダをSpongy Castleに切り替えることでした。

ハウツークイック:

  1. SpongyCastleのJARファイルをダウンロードし、お使いのlibs /プロジェクトフォルダに置きます。私はAPGからのJAR使用: - > Javaビルド・パスを - そのプロパティに行くことによって、プロジェクトにファイルを追加し、Eclipseを使用している場合http://code.google.com/p/android-privacy-guard/source/browse/lib/bcprov-jdk16-146.jar?name=apg_service
  2. を>ライブラリは - > JARの追加... - >ファイルを選択し
  3. 署名クラスのどこかに次の行を追加します。

    static { Security.addProvider(new org.spongycastle.jce.provider.BouncyCastleProvider()); }

  4. (のgetInstanceにSCを使用してBCを交換)

    署名署名= Signature.getInstance( "SHA1withRSA/PSS"、 "SC")。

欠点:バイナリには1.5MBのボーナスが含まれます。

関連する問題