Skip to content

Commit 41d35f2

Browse files
author
Roy Basmacier
committed
Merge branch 'tls-mldsa-test' into 'main'
Added ML-DSA test to TlsCryptoTest. See merge request root/bc-java!111
2 parents f5ad7de + 7d920d7 commit 41d35f2

3 files changed

Lines changed: 30 additions & 5 deletions

File tree

tls/src/main/java/org/bouncycastle/tls/crypto/impl/bc/BcTlsRawKeyCertificate.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -409,14 +409,27 @@ public MLDSAPublicKeyParameters getPubKeyMLDSA() throws IOException
409409
{
410410
try
411411
{
412-
return (MLDSAPublicKeyParameters)getPublicKey();
412+
return (MLDSAPublicKeyParameters)getPQCPublicKey();
413413
}
414414
catch (ClassCastException e)
415415
{
416416
throw new TlsFatalAlert(AlertDescription.certificate_unknown, "Public key not ML-DSA", e);
417417
}
418418
}
419419

420+
protected AsymmetricKeyParameter getPQCPublicKey() throws IOException
421+
{
422+
try
423+
{
424+
return org.bouncycastle.pqc.crypto.util.PublicKeyFactory.createKey(keyInfo);
425+
}
426+
catch (RuntimeException e)
427+
{
428+
throw new TlsFatalAlert(AlertDescription.unsupported_certificate, e);
429+
}
430+
}
431+
432+
420433
public RSAKeyParameters getPubKeyRSA() throws IOException
421434
{
422435
try

tls/src/test/java/org/bouncycastle/tls/crypto/test/TlsCryptoTest.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,12 @@ protected TlsCredentialedSigner loadCredentialedSigner13(TlsCryptoParameters cry
187187
case SignatureScheme.rsa_pss_rsae_sha384:
188188
case SignatureScheme.rsa_pss_rsae_sha512:
189189
return loadCredentialedSigner(cryptoParams, "rsa-sign", signatureAndHashAlgorithm);
190+
case SignatureScheme.DRAFT_mldsa44:
191+
return loadCredentialedSigner(cryptoParams, "ml_dsa_44", signatureAndHashAlgorithm);
192+
case SignatureScheme.DRAFT_mldsa65:
193+
return loadCredentialedSigner(cryptoParams, "ml_dsa_65", signatureAndHashAlgorithm);
194+
case SignatureScheme.DRAFT_mldsa87:
195+
return loadCredentialedSigner(cryptoParams, "ml_dsa_87", signatureAndHashAlgorithm);
190196

191197
// TODO[tls] Add test resources for these
192198
case SignatureScheme.ecdsa_brainpoolP256r1tls13_sha256:
@@ -195,9 +201,6 @@ protected TlsCredentialedSigner loadCredentialedSigner13(TlsCryptoParameters cry
195201
case SignatureScheme.ecdsa_secp384r1_sha384:
196202
case SignatureScheme.ecdsa_secp521r1_sha512:
197203
case SignatureScheme.sm2sig_sm3:
198-
case SignatureScheme.DRAFT_mldsa44:
199-
case SignatureScheme.DRAFT_mldsa65:
200-
case SignatureScheme.DRAFT_mldsa87:
201204

202205
default:
203206
return null;

tls/src/test/java/org/bouncycastle/tls/test/TlsTestUtils.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -417,7 +417,16 @@ static AsymmetricKeyParameter loadBcPrivateKeyResource(String resource)
417417
PemObject pem = loadPemResource(resource);
418418
if (pem.getType().equals("PRIVATE KEY"))
419419
{
420-
return PrivateKeyFactory.createKey(pem.getContent());
420+
AsymmetricKeyParameter kp;
421+
try
422+
{
423+
kp = PrivateKeyFactory.createKey(pem.getContent());
424+
}
425+
catch (Exception e)
426+
{
427+
kp = org.bouncycastle.pqc.crypto.util.PrivateKeyFactory.createKey(pem.getContent());
428+
}
429+
return kp;
421430
}
422431
if (pem.getType().equals("ENCRYPTED PRIVATE KEY"))
423432
{

0 commit comments

Comments
 (0)