@@ -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