1
package org.bouncycastle.jce.provider.test.rsa3;
3
import junit.framework.Test;
4
import junit.framework.TestCase;
5
import junit.framework.TestSuite;
6
import org.bouncycastle.openssl.PEMReader;
8
import java.io.InputStreamReader;
10
import java.security.Security;
11
import java.security.Signature;
12
import java.security.cert.X509Certificate;
15
* Marius Schilder's Bleichenbacher's Forgery Attack Tests
17
public class RSA3CertTest
22
if (Security.getProvider("BC") == null)
24
Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
31
doTest("self-testcase-A.pem");
37
doTest("self-testcase-B.pem");
43
doTest("self-testcase-C.pem");
49
doTest("self-testcase-D.pem");
55
doTest("self-testcase-E.pem");
61
doTest("self-testcase-F.pem");
67
doTest("self-testcase-G.pem");
73
doTest("self-testcase-H.pem");
79
doTest("self-testcase-I.pem");
85
doTest("self-testcase-J.pem");
91
doTest("self-testcase-L.pem");
98
X509Certificate cert = loadCert(certName);
99
byte[] tbs = cert.getTBSCertificate();
100
Signature sig = Signature.getInstance(cert.getSigAlgName(), "BC");
102
sig.initVerify(cert.getPublicKey());
106
assertFalse(sig.verify(cert.getSignature()));
109
private X509Certificate loadCert(
113
Reader in = new InputStreamReader(getClass().getResourceAsStream(certName));
114
PEMReader rd = new PEMReader(in);
116
return (X509Certificate)rd.readObject();
119
public static void main (String[] args)
122
junit.textui.TestRunner.run(suite());
125
public static Test suite()
128
TestSuite suite = new TestSuite("Bleichenbacher's Forgery Attack Tests");
130
suite.addTestSuite(RSA3CertTest.class);