gpt4 book ai didi

android - 在 Android 中将 KeyStore 写入文件时,使用 BouncyCaSTLe PKCS12SafeBagBuilder 或 PKCS12BagAttributeCarrier 更改 PKCS12 安全包属性?

转载 作者:行者123 更新时间:2023-11-30 03:58:49 26 4
gpt4 key购买 nike

我正在尝试使用 BouncyCaSTLe 1.47(bckpix-jdk15on-147.jarbcprov)将私钥和关联的签名证书写入 Android 设备上的 PKCS12 (.p12) 文件-jdk15on-147.jar) 并希望更改 key 加密算法和其他包属性。我正在尝试实现可用于 OpenSSL 的 PKCS12_create() 函数的相同控件,您可以在其中设置:

  • 私钥加密算法
  • 证书加密算法
  • 加密迭代次数
  • MAC 迭代次数

到目前为止,我看到了将 PKCS12BagAttributeCarrierPKCS12SafeBagBuilderPKCS12PfxPduBuilder 一起使用的建议,但无法弄清楚如何更改列出的四个属性以上(或正确使用它们)。

除了更改 PKCSObjectIdentifiers.pkcs_9_at_friendlyNamePKCSObjectIdentifiers.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();

提前致谢!

最佳答案

是的,org.bouncycaSTLe.pkcs 包是正确的地方。

为准备 1.49,在这方面进行了大量工作。目前,我建议在 http://www.bouncycastle.org/betas 获取该版本。您可以使用 PKCS 包的测试类作为引用,新指南中还有一个示例程序和一篇文章,网址为 http://www.cryptoworkshop.com/guide

问候,

大卫

关于android - 在 Android 中将 KeyStore 写入文件时,使用 BouncyCaSTLe PKCS12SafeBagBuilder 或 PKCS12BagAttributeCarrier 更改 PKCS12 安全包属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12890436/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com