BouncyCastle 1.47 (bckpix-jdk15on-147.jar
およびbcprov-jdk15on-147.jar
) を使用して Android デバイスの PKCS12 (.p12) ファイルに秘密鍵と関連する署名付き証明書を書き込もうとしています。キー暗号化アルゴリズムとその他のバッグ属性を変更したいと考えています。PKCS12_create()
OpenSSL の機能で使用できる同じコントロールを実装しようとしています。ここで設定できます。
- 秘密鍵暗号化アルゴリズム
- 証明書暗号化アルゴリズム
- 暗号化反復回数
- MAC 反復回数
PKCS12BagAttributeCarrier
これまでのところ、 orPKCS12SafeBagBuilder
を使用するための推奨事項を見てきましPKCS12PfxPduBuilder
たが、上記の 4 つの属性を変更する方法 (またはそれらを正しく使用する方法) を理解できませんでした。
現在どの方法が好まれているか、またはこれらの変更以外の経験や例を知っている人はいますPKCSObjectIdentifiers.pkcs_9_at_friendlyName
かPKCSObjectIdentifiers.pkcs_9_at_localKeyId
? KeyStore
ファイルに書き込む前に、オブジェクト以外のものをコンテナーとして使用する必要がありますか?
PKCS12 ファイルを作成でき、両方の繰り返し回数のデフォルトが 1024、秘密鍵アルゴリズムがpbeWithSHA1And3-KeyTripleDES-CBC
、証明書アルゴリズムが であることに気付きましたpbeWithSHA1And40BitRC2-CBC
。
PKCS12 ファイルを作成するために使用しているものは次のとおりです。
Context appContext = ...;
String p12Filename = ...;
String p12Password = ...;
String p12Alias = ...;
RSAPrivateKey privateKey = ...;
X509Certificae signedCert = ...;
KeyStore store = KeyStore.getInstance("PKCS12", "BC");
store.load(null, null);
X509Certificate[] chain = new X509Certificate[1];
chain[0] = signedCert;
store.setKeyEntry("UserCredentials", privateKey, p12Password.toCharArray(), chain);
FileOutputStream fos;
File outputDir = appContext.getFilesDir();
File pkcs12File = new File(outputDir, p12Filename);
fos = new FileOutputStream(pkcs12File);
store.store(fos, p12Password.toCharArray());
fos.flush();
fos.close();
前もって感謝します!