Skip to content

Commit b7e9f8d

Browse files
committed
added same subject test - relates to github #1683
1 parent d12f547 commit b7e9f8d

File tree

1 file changed

+58
-19
lines changed

1 file changed

+58
-19
lines changed

pkix/src/test/java/org/bouncycastle/cert/test/DeltaCertTest.java

Lines changed: 58 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,45 @@ public void setUp()
131131
}
132132
}
133133

134+
public void testSameName()
135+
throws Exception
136+
{
137+
KeyPairGenerator rsaKeyGen = KeyPairGenerator.getInstance("RSA", "BC");
138+
rsaKeyGen.initialize(2048, new java.security.SecureRandom());
139+
java.security.KeyPair deltaKeyPair = rsaKeyGen.generateKeyPair();
140+
java.security.KeyPair baseKeyPair = rsaKeyGen.generateKeyPair();
141+
142+
// Generate a self-signed Delta Certificate
143+
X509v3CertificateBuilder deltaCertBuilder = new X509v3CertificateBuilder(
144+
new X500Name("CN=Issuer"),
145+
java.math.BigInteger.valueOf(1L),
146+
new java.util.Date(System.currentTimeMillis()),
147+
new java.util.Date(System.currentTimeMillis() + 365L * 24 * 60 * 60 * 1000),
148+
new X500Name("CN=Subject"),
149+
SubjectPublicKeyInfo.getInstance(deltaKeyPair.getPublic().getEncoded())
150+
);
151+
ContentSigner deltaRootSigner = new JcaContentSignerBuilder("SHA256withRSA").build(deltaKeyPair.getPrivate());
152+
X509CertificateHolder deltaCert = deltaCertBuilder.build(deltaRootSigner);
153+
154+
// Generate a self-signed Base Certificate
155+
X509v3CertificateBuilder baseCertBuilder = new X509v3CertificateBuilder(
156+
new X500Name("CN=Issuer"), // Same as Delta Certificate
157+
java.math.BigInteger.valueOf(2L),
158+
new java.util.Date(System.currentTimeMillis()),
159+
new java.util.Date(System.currentTimeMillis() + 365L * 24 * 60 * 60 * 1000),
160+
new X500Name("CN=Subject"), // Same as Delta Certificate
161+
SubjectPublicKeyInfo.getInstance(baseKeyPair.getPublic().getEncoded())
162+
);
163+
164+
// Create Delta Extension
165+
Extension deltaCertExtension = DeltaCertificateTool.makeDeltaCertificateExtension(false, deltaCert);
166+
// Add Delta Extension to Base Certificate
167+
baseCertBuilder.addExtension(deltaCertExtension);
168+
// Build Base Certificate
169+
ContentSigner baseRootSigner = new JcaContentSignerBuilder("SHA256withRSA").build(baseKeyPair.getPrivate());
170+
X509CertificateHolder baseCert = baseCertBuilder.build(baseRootSigner); // <= Exception thrown here
171+
}
172+
134173
// TODO: add new request data (change to explicit tags)
135174
// public void testDeltaCertRequest()
136175
// throws Exception
@@ -229,13 +268,13 @@ public void testDeltaCertWithExtensions()
229268
ContentSigner signerB = new JcaContentSignerBuilder("SHA256withECDSA").build(kpB.getPrivate());
230269

231270
X509v3CertificateBuilder deltaBldr = new X509v3CertificateBuilder(
232-
new X500Name("CN=Chameleon CA 2"),
233-
BigInteger.valueOf(System.currentTimeMillis()),
234-
notBefore,
235-
notAfter,
236-
subject,
237-
SubjectPublicKeyInfo.getInstance(kpB.getPublic().getEncoded()));
238-
271+
new X500Name("CN=Chameleon CA 2"),
272+
BigInteger.valueOf(System.currentTimeMillis()),
273+
notBefore,
274+
notAfter,
275+
subject,
276+
SubjectPublicKeyInfo.getInstance(kpB.getPublic().getEncoded()));
277+
239278
deltaBldr.addExtension(Extension.basicConstraints, true, new BasicConstraints(false));
240279

241280
X509CertificateHolder deltaCert = deltaBldr.build(signerB);
@@ -256,7 +295,7 @@ public void testDeltaCertWithExtensions()
256295
assertNotNull(deltaCertDesc.getIssuer());
257296

258297
X509CertificateHolder exDeltaCert = DeltaCertificateTool.extractDeltaCertificate(chameleonCert);
259-
298+
260299
assertTrue(exDeltaCert.isSignatureValid(new JcaContentVerifierProviderBuilder().setProvider("BC").build(kpB.getPublic())));
261300
}
262301

@@ -316,16 +355,16 @@ public void testCheckCreationAltCertWithDelta()
316355
ContentSigner signerB = new JcaContentSignerBuilder("SHA256withECDSA").build(kpB.getPrivate());
317356

318357
X509v3CertificateBuilder deltaBldr = new X509v3CertificateBuilder(
319-
new X500Name("CN=Chameleon CA 2"),
320-
BigInteger.valueOf(System.currentTimeMillis()),
321-
notBefore,
322-
notAfter,
323-
subject,
324-
SubjectPublicKeyInfo.getInstance(kpB.getPublic().getEncoded()));
358+
new X500Name("CN=Chameleon CA 2"),
359+
BigInteger.valueOf(System.currentTimeMillis()),
360+
notBefore,
361+
notAfter,
362+
subject,
363+
SubjectPublicKeyInfo.getInstance(kpB.getPublic().getEncoded()));
325364

326365
deltaBldr.addExtension(Extension.basicConstraints, true, new BasicConstraints(false))
327-
.addExtension(Extension.subjectAltPublicKeyInfo, false, SubjectAltPublicKeyInfo.getInstance(kp.getPublic().getEncoded()));
328-
366+
.addExtension(Extension.subjectAltPublicKeyInfo, false, SubjectAltPublicKeyInfo.getInstance(kp.getPublic().getEncoded()));
367+
329368
X509CertificateHolder deltaCert = deltaBldr.build(signerB, false, altSigGen);
330369

331370
assertTrue(deltaCert.isSignatureValid(new JcaContentVerifierProviderBuilder().setProvider("BC").build(kpB.getPublic())));
@@ -351,7 +390,7 @@ public void testCheckCreationAltCertWithDelta()
351390

352391
X509CertificateHolder certHolder = new JcaX509CertificateHolder(cert);
353392

354-
// assertTrue("alt sig value wrong", certHolder.isAlternativeSignatureValid(new JcaContentVerifierProviderBuilder().setProvider("BCPQC").build(pubKey)));
393+
// assertTrue("alt sig value wrong", certHolder.isAlternativeSignatureValid(new JcaContentVerifierProviderBuilder().setProvider("BCPQC").build(pubKey)));
355394

356395
X509CertificateHolder exDeltaCert = DeltaCertificateTool.extractDeltaCertificate(new X509CertificateHolder(cert.getEncoded()));
357396

@@ -390,7 +429,7 @@ public void testDraftMLDSAEndEntity()
390429
X509CertificateHolder deltaCert = DeltaCertificateTool.extractDeltaCertificate(baseCert);
391430

392431
assertTrue(deltaCert.isSignatureValid(new JcaContentVerifierProviderBuilder().setProvider("BC").build(rootCert.getSubjectPublicKeyInfo())));
393-
432+
394433
X509CertificateHolder extCert = readCert("ml_dsa_ee.pem");
395434

396435
assertTrue(extCert.equals(deltaCert));
@@ -409,7 +448,7 @@ public void testDraftDualUseEcDsaEndEntity()
409448
X509CertificateHolder extCert = readCert("ec_dsa_dual_sig_ee.pem");
410449

411450
assertTrue(extCert.equals(deltaCert));
412-
451+
413452
assertTrue(deltaCert.isSignatureValid(new JcaContentVerifierProviderBuilder().setProvider("BC").build(ecRootCert.getSubjectPublicKeyInfo())));
414453
}
415454

0 commit comments

Comments
 (0)