天道酬勤,学无止境

bouncycastle

如何从 X509Certificate2 构造 Pkcs12Store(How to construct Pkcs12Store from X509Certificate2)

问题 我有一个 System.Security.Cryptography.X509Certificates.X509Certificate2 的对象。 我想使用这个对象构造一个 Pkcs12Store (Org.BouncyCastle.Pkcs) 的实例。 我试过: 方法一: public Pkcs12Store GetPkcs12Store(X509Certificate2 cert, string password) { byte[] rawdata = cert.RawData; MemoryStream memStream = new MemoryStream(rawdata); Pkcs12Store pk12; pk12 = new Pkcs12Store(memStream, password.ToCharArray()); return pk12; } 在这种方法中,我得到了例外: Unable to cast object of type 'Org.BouncyCastle.Asn1.DerSequence' to type 'Org.BouncyCastle.Asn1.DerInteger'. 方法二: 我试过: public static Pkcs12Store GetPkcs12Store(X509Certificate2 cert, string

2022-01-16 11:37:51    分类:技术分享    c#   cryptography   certificate   bouncycastle   x509

Android:CyanogenMod 7 (Android 2.3) + BouncyCastle 加密库:IllegalAccessError(Android: CyanogenMod 7 (Android 2.3) + BouncyCastle encryption libraries: IllegalAccessError)

问题 使用 bouncycastle 库时出现一个奇怪的错误: ERROR/AndroidRuntime(1226): FATAL EXCEPTION: Thread-10 ERROR/AndroidRuntime(1226): java.lang.IllegalAccessError: tried to access class org.bouncycastle.crypto.engines.RSACoreEngine from class org.bouncycastle.crypto.engines.RSAEngine ERROR/AndroidRuntime(1226): at org.bouncycastle.crypto.engines.RSAEngine.init(Unknown Source) ERROR/AndroidRuntime(1226): at org.bouncycastle.crypto.encodings.PKCS1Encoding.init(PKCS1Encoding.java:90) 我已将 bouncycastle jar 文件 ( bcprov145.jar ) 添加到 eclipse 项目中。 产生此异常的代码是: public int encrypt(byte[] source, int sourceLength, byte[]

2022-01-16 06:26:07    分类:技术分享    android   encryption   bouncycastle   android-sdk-2.3   cyanogenmod

"Not trusted Server Certificate" in Android 2.2 but not 3.0

I'm using the BouncyCastle provider and Apache HttpClient to trust an SSL certificate, as described by Antoine Hauck here. The app I've made targets Android 1.5, and works fine on the emulator and a device running 3.0. However, when I try to test it on 2.2 (Galaxy S), an SSLException, "Not trusted Server Certificate", occurs. Since there's no errors complaining about BouncyCastle itself, I'm assuming the device is not reading the certificates properly from the .bks file. Is what I'm attempting possible using BouncyCastle on Android version 2.2, or does something just need to be altered from

2022-01-15 15:48:30    分类:问答    android   ssl   bouncycastle   sslhandshakeexception

如果针对 Android 3.0 及更高版本,使用 SpongyCastle 是否有优于 BouncyCastle 的优势?(Are there advantages for using SpongyCastle over BouncyCastle, if targeting Android 3.0 and later?)

问题 如果我对情况的理解正确,SpongyCastle 是对 BouncyCastle 的重命名,它的创建是为了让人们能够在 Android 上包含新版本的 BouncyCastle,因为仅包含最新的 BouncyCastle jar 会导致与旧版本和精简版本的冲突Android 自带的 BouncyCastle。 然而,显然自 3.0 版(2011 年 - 6 年前!)以来,Android BouncyCastle 包已重命名为com.android.org.bouncycastle ,因此现在如果您包含常规org.bouncycastle ,这将不再与 pre 冲突-packaged 剥离了 BouncyCastle,您可以这样使用最新版本。 让我感到困惑的是,SpongyCastle 项目似乎仍然非常活跃,每当我搜索“Android 上的 BouncyCastle”或任何相关内容时,我都会从过去几年中得到很多结果,这些结果建议使用 SpongyCastle,理由是类冲突问题作为推理,即使它们(显然)早在 2011 年就已经解决了。我看到的另一个对我来说更有意义的论点是 SpongyCastle 更向后兼容,因为你不会遇到任何问题运行早于 3.0 的 Android 版本的设备。 所以我的问题是,如果您的目标不是早于 3.0 的 Android 版本,使用

2022-01-15 03:37:11    分类:技术分享    java   android   cryptography   bouncycastle   spongycastle

无法验证签名 (cmssigneddata) bouncycastle(Cannot verify signature (cmssigneddata) bouncycastle)

问题 当我想验证我用 BouncyCastle 制作的签名时,我不会进入verifySignature方法的第二个while循环。 store.getMatches()返回一个空数组。 public static CMSSignedData sign() throws Exception { byte[] file = fileChooser(); store = KeyStore.getInstance(storeType); FileInputStream in = new FileInputStream(new File(storePathKey)); store.load(in, storePassword); in.close(); Key priv = store.getKey("Subject", storePassword); System.out.println(priv.toString() + "priv string"); X509Certificate cert = (X509Certificate) store.geCertificate("Subject"); ContentSigner signer = new JcaContentSignerBuilder(sigAlgo).build((RSAPrivateKey) priv)

2022-01-14 15:58:05    分类:技术分享    java   store   bouncycastle   sign   verify

使用 OAEP 密钥加密的 S/MIME 封装消息解密失败?(Decrypttion fails on S/MIME enveloped message with OAEP key encryption?)

问题 使用 Java 和 BouncyCastle,我能够解密大量 S/MIME 封装的消息。 但是当密钥加密算法为1.2.840.113549.1.1.7 (id-RSAES-OAEP) 时,解密失败(本问题末尾的堆栈跟踪)。 它发生的那一行: content = messageRecipientInfo.getContent(new JceKeyTransEnvelopedRecipient(pc).setProvider("BC")); 以前我用那行来解密: content = messageRecipientInfo.getContent(givenCertRecipient); 全部都是一样。 有什么猜测吗? 编辑 * 我现在尝试使用 OAEP 加密数据。 因此,我在文件 cms/test/NewEnvelopedDataTest.java 中直接在 BouncyCastle 中找到了代码,即使这样也行不通! 同样的错误: String BC = BouncyCastleProvider.PROVIDER_NAME; KeyPair _reciKP = CMSTestUtil.makeKeyPair(); String _reciDN = "CN=Doug, OU=Sales, O=Bouncy Castle, C=AU"; KeyPair _signKP =

2022-01-14 15:13:44    分类:技术分享    java   algorithm   encryption   bouncycastle   smime

Android: CyanogenMod 7 (Android 2.3) + BouncyCastle encryption libraries: IllegalAccessError

I'm getting a strange error when using bouncycastle libraries: ERROR/AndroidRuntime(1226): FATAL EXCEPTION: Thread-10 ERROR/AndroidRuntime(1226): java.lang.IllegalAccessError: tried to access class org.bouncycastle.crypto.engines.RSACoreEngine from class org.bouncycastle.crypto.engines.RSAEngine ERROR/AndroidRuntime(1226): at org.bouncycastle.crypto.engines.RSAEngine.init(Unknown Source) ERROR/AndroidRuntime(1226): at org.bouncycastle.crypto.encodings.PKCS1Encoding.init(PKCS1Encoding.java:90) I've added the bouncycastle jar file (bcprov145.jar) to the eclipse project. The code that generated

2022-01-14 14:46:32    分类:问答    android   encryption   bouncycastle   android-sdk-2.3   cyanogenmod

在充气城堡中生成 ECDSA 私钥会返回一个 PUBLIC 密钥(Generating a ECDSA Private key in bouncy castle returns a PUBLIC key)

问题 我正在尝试使用充气城堡来生成 ECDSA 密钥。 从 Java 的角度来看,该代码似乎运行良好; 但是,当我转储文件并尝试验证数据时,OpenSSL 不喜欢数据的格式。 经过一番研究,我发现充气城堡将私钥编码为公钥。 这是我的Java代码: public class Test { public static void main(String[] args) { Security.addProvider(new BouncyCastleProvider()); System.out.println("Starting..."); String name = "prime256v1"; try { KeyPairGenerator kpg = KeyPairGenerator.getInstance("ECDSA", BouncyCastleProvider.PROVIDER_NAME); kpg.initialize(new ECGenParameterSpec(name)); KeyPair keyPair = kpg.generateKeyPair(); FileOutputStream writer = new FileOutputStream("private.key"); writer.write(keyPair.getPrivate().getEncoded())

2022-01-14 07:24:38    分类:技术分享    java   openssl   bouncycastle   ecdsa

Cannot verify signature (cmssigneddata) bouncycastle

When I want to verify my signature made with BouncyCastle I don't get into the second while loop of the verifySignature method. The store.getMatches() gives back an empty array. public static CMSSignedData sign() throws Exception { byte[] file = fileChooser(); store = KeyStore.getInstance(storeType); FileInputStream in = new FileInputStream(new File(storePathKey)); store.load(in, storePassword); in.close(); Key priv = store.getKey("Subject", storePassword); System.out.println(priv.toString() + "priv string"); X509Certificate cert = (X509Certificate) store.geCertificate("Subject")

2022-01-14 02:24:25    分类:问答    java   store   bouncycastle   sign   verify

Java 字节数组到 ECCPrivateKey - InvalidKeySpecException:无法识别编码的密钥规范(Java byte array to ECCPrivateKey - InvalidKeySpecException: encoded key spec not recognised)

问题 当我尝试从字节数组制作 ECC 私钥时,出现下面提到的异常。 我有公钥/私钥和来自 C 库 micro-ecc/uECC.h 的签名输出。 C 使用 secp192r1 曲线。 我正在尝试使用 Java 中 C 生成的密钥来验证数据。 如何将字节数组转换为私钥/公钥? Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider()); byte[] kb = new byte[]{(byte)0x24, (byte)0xF4, (byte)0x36, (byte)0x16, (byte)0xD0, (byte)0x96, (byte)0x12, (byte)0x63, (byte)0x90, (byte)0x2E, (byte)0x51, (byte)0xF6, (byte)0x87, (byte)0x55, (byte)0xAB, (byte)0xCB, (byte)0x5D, (byte)0xAC, (byte)0x56, (byte)0x1A, (byte)0xA5, (byte)0xFA, (byte)0x55, (byte)0xDB}; X509EncodedKeySpec ks = new X509EncodedKeySpec(kb); KeyFactory kf =

2022-01-13 23:42:47    分类:技术分享    cryptography   bouncycastle   private-key   elliptic-curve   java-security