Skip to content

Commit

Permalink
update to draft 11 version (SHA512 instead of SHA384, different OID e…
Browse files Browse the repository at this point in the history
…ncoding into signature)
  • Loading branch information
Honzaik committed Feb 8, 2024
1 parent fb8fe21 commit 74f76d6
Show file tree
Hide file tree
Showing 8 changed files with 626 additions and 170 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -167,22 +167,22 @@ public interface MiscObjectIdentifiers

// COMPOSITE SIGNATURES START
// -- To be replaced by IANA
// Composite signature related OIDs. Based https://www.ietf.org/archive/id/draft-ounsworth-pq-composite-sigs-10.html
// Composite signature related OIDs. Based https://www.ietf.org/archive/id/draft-ounsworth-pq-composite-sigs-11.html
// The current OIDs are EXPERIMENTAL and are going to change.
ASN1ObjectIdentifier id_composite_signatures = new ASN1ObjectIdentifier("2.16.840.1.114027.80.7.1");
ASN1ObjectIdentifier id_composite_signatures = new ASN1ObjectIdentifier("2.16.840.1.114027.80.8.1");
ASN1ObjectIdentifier id_MLDSA44_RSA2048_PSS_SHA256 = id_composite_signatures.branch("1");
ASN1ObjectIdentifier id_MLDSA44_RSA2048_PKCS15_SHA256 = id_composite_signatures.branch("2");
ASN1ObjectIdentifier id_MLDSA44_Ed25519_SHA512 = id_composite_signatures.branch("3");
ASN1ObjectIdentifier id_MLDSA44_ECDSA_P256_SHA256 = id_composite_signatures.branch("4");
ASN1ObjectIdentifier id_MLDSA44_ECDSA_brainpoolP256r1_SHA256 = id_composite_signatures.branch("5");
ASN1ObjectIdentifier id_MLDSA65_RSA3072_PSS_SHA256 = id_composite_signatures.branch("6");
ASN1ObjectIdentifier id_MLDSA65_RSA3072_PKCS15_SHA256 = id_composite_signatures.branch("7");
ASN1ObjectIdentifier id_MLDSA65_ECDSA_P256_SHA256 = id_composite_signatures.branch("8");
ASN1ObjectIdentifier id_MLDSA65_ECDSA_brainpoolP256r1_SHA256 = id_composite_signatures.branch("9");
ASN1ObjectIdentifier id_MLDSA65_RSA3072_PSS_SHA512 = id_composite_signatures.branch("6");
ASN1ObjectIdentifier id_MLDSA65_RSA3072_PKCS15_SHA512 = id_composite_signatures.branch("7");
ASN1ObjectIdentifier id_MLDSA65_ECDSA_P256_SHA512 = id_composite_signatures.branch("8");
ASN1ObjectIdentifier id_MLDSA65_ECDSA_brainpoolP256r1_SHA512 = id_composite_signatures.branch("9");
ASN1ObjectIdentifier id_MLDSA65_Ed25519_SHA512 = id_composite_signatures.branch("10");
ASN1ObjectIdentifier id_MLDSA87_ECDSA_P384_SHA384 = id_composite_signatures.branch("11");
ASN1ObjectIdentifier id_MLDSA87_ECDSA_brainpoolP384r1_SHA384 = id_composite_signatures.branch("12");
ASN1ObjectIdentifier id_MLDSA87_Ed448_SHAKE256 = id_composite_signatures.branch("13");
ASN1ObjectIdentifier id_MLDSA87_ECDSA_P384_SHA512 = id_composite_signatures.branch("11");
ASN1ObjectIdentifier id_MLDSA87_ECDSA_brainpoolP384r1_SHA512 = id_composite_signatures.branch("12");
ASN1ObjectIdentifier id_MLDSA87_Ed448_SHA512 = id_composite_signatures.branch("13");
ASN1ObjectIdentifier id_Falcon512_ECDSA_P256_SHA256 = id_composite_signatures.branch("14");
ASN1ObjectIdentifier id_Falcon512_ECDSA_brainpoolP256r1_SHA256 = id_composite_signatures.branch("15");
ASN1ObjectIdentifier id_Falcon512_Ed25519_SHA512 = id_composite_signatures.branch("16");
Expand Down
516 changes: 475 additions & 41 deletions pkix/src/test/java/org/bouncycastle/cert/test/CertTest.java

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,46 @@ public abstract class CompositeSignaturesConstants
/**
* An array of supported identifiers of composite signature schemes.
*/
public static final ASN1ObjectIdentifier[] supportedIdentifiers = {MiscObjectIdentifiers.id_MLDSA44_RSA2048_PSS_SHA256, MiscObjectIdentifiers.id_MLDSA44_RSA2048_PKCS15_SHA256, MiscObjectIdentifiers.id_MLDSA44_Ed25519_SHA512, MiscObjectIdentifiers.id_MLDSA44_ECDSA_P256_SHA256, MiscObjectIdentifiers.id_MLDSA44_ECDSA_brainpoolP256r1_SHA256, MiscObjectIdentifiers.id_MLDSA65_RSA3072_PSS_SHA256, MiscObjectIdentifiers.id_MLDSA65_RSA3072_PKCS15_SHA256, MiscObjectIdentifiers.id_MLDSA65_ECDSA_P256_SHA256, MiscObjectIdentifiers.id_MLDSA65_ECDSA_brainpoolP256r1_SHA256, MiscObjectIdentifiers.id_MLDSA65_Ed25519_SHA512, MiscObjectIdentifiers.id_MLDSA87_ECDSA_P384_SHA384, MiscObjectIdentifiers.id_MLDSA87_ECDSA_brainpoolP384r1_SHA384, MiscObjectIdentifiers.id_MLDSA87_Ed448_SHAKE256, MiscObjectIdentifiers.id_Falcon512_ECDSA_P256_SHA256, MiscObjectIdentifiers.id_Falcon512_ECDSA_brainpoolP256r1_SHA256, MiscObjectIdentifiers.id_Falcon512_Ed25519_SHA512,};
public static final ASN1ObjectIdentifier[] supportedIdentifiers = {
MiscObjectIdentifiers.id_MLDSA44_RSA2048_PSS_SHA256,
MiscObjectIdentifiers.id_MLDSA44_RSA2048_PKCS15_SHA256,
MiscObjectIdentifiers.id_MLDSA44_Ed25519_SHA512,
MiscObjectIdentifiers.id_MLDSA44_ECDSA_P256_SHA256,
MiscObjectIdentifiers.id_MLDSA44_ECDSA_brainpoolP256r1_SHA256,
MiscObjectIdentifiers.id_MLDSA65_RSA3072_PSS_SHA512,
MiscObjectIdentifiers.id_MLDSA65_RSA3072_PKCS15_SHA512,
MiscObjectIdentifiers.id_MLDSA65_ECDSA_P256_SHA512,
MiscObjectIdentifiers.id_MLDSA65_ECDSA_brainpoolP256r1_SHA512,
MiscObjectIdentifiers.id_MLDSA65_Ed25519_SHA512,
MiscObjectIdentifiers.id_MLDSA87_ECDSA_P384_SHA512,
MiscObjectIdentifiers.id_MLDSA87_ECDSA_brainpoolP384r1_SHA512,
MiscObjectIdentifiers.id_MLDSA87_Ed448_SHA512,
MiscObjectIdentifiers.id_Falcon512_ECDSA_P256_SHA256,
MiscObjectIdentifiers.id_Falcon512_ECDSA_brainpoolP256r1_SHA256,
MiscObjectIdentifiers.id_Falcon512_Ed25519_SHA512,
};

/**
* Enum of supported composited signature schemes. Each one corresponds to a value from supportedIdentifiers.
*/
public enum CompositeName
{
MLDSA44_RSA2048_PSS_SHA256, MLDSA44_RSA2048_PKCS15_SHA256, MLDSA44_ECDSA_P256_SHA256, MLDSA44_ECDSA_brainpoolP256r1_SHA256, MLDSA44_Ed25519_SHA512, MLDSA65_RSA3072_PSS_SHA256, MLDSA65_RSA3072_PKCS15_SHA256, MLDSA65_ECDSA_brainpoolP256r1_SHA256, MLDSA65_ECDSA_P256_SHA256, MLDSA65_Ed25519_SHA512, MLDSA87_ECDSA_P384_SHA384, MLDSA87_ECDSA_brainpoolP384r1_SHA384, MLDSA87_Ed448_SHAKE256, Falcon512_ECDSA_P256_SHA256, Falcon512_ECDSA_brainpoolP256r1_SHA256, Falcon512_Ed25519_SHA512,
MLDSA44_RSA2048_PSS_SHA256,
MLDSA44_RSA2048_PKCS15_SHA256,
MLDSA44_ECDSA_P256_SHA256,
MLDSA44_ECDSA_brainpoolP256r1_SHA256,
MLDSA44_Ed25519_SHA512,
MLDSA65_RSA3072_PSS_SHA512,
MLDSA65_RSA3072_PKCS15_SHA512,
MLDSA65_ECDSA_brainpoolP256r1_SHA512,
MLDSA65_ECDSA_P256_SHA512,
MLDSA65_Ed25519_SHA512,
MLDSA87_ECDSA_P384_SHA512,
MLDSA87_ECDSA_brainpoolP384r1_SHA512,
MLDSA87_Ed448_SHA512,
Falcon512_ECDSA_P256_SHA256,
Falcon512_ECDSA_brainpoolP256r1_SHA256,
Falcon512_Ed25519_SHA512,
}

/**
Expand All @@ -39,14 +71,14 @@ public enum CompositeName
compositeNameASN1IdentifierMap.put(CompositeName.MLDSA44_ECDSA_P256_SHA256, MiscObjectIdentifiers.id_MLDSA44_ECDSA_P256_SHA256);
compositeNameASN1IdentifierMap.put(CompositeName.MLDSA44_ECDSA_brainpoolP256r1_SHA256, MiscObjectIdentifiers.id_MLDSA44_ECDSA_brainpoolP256r1_SHA256);
compositeNameASN1IdentifierMap.put(CompositeName.MLDSA44_Ed25519_SHA512, MiscObjectIdentifiers.id_MLDSA44_Ed25519_SHA512);
compositeNameASN1IdentifierMap.put(CompositeName.MLDSA65_RSA3072_PSS_SHA256, MiscObjectIdentifiers.id_MLDSA65_RSA3072_PSS_SHA256);
compositeNameASN1IdentifierMap.put(CompositeName.MLDSA65_RSA3072_PKCS15_SHA256, MiscObjectIdentifiers.id_MLDSA65_RSA3072_PKCS15_SHA256);
compositeNameASN1IdentifierMap.put(CompositeName.MLDSA65_ECDSA_P256_SHA256, MiscObjectIdentifiers.id_MLDSA65_ECDSA_P256_SHA256);
compositeNameASN1IdentifierMap.put(CompositeName.MLDSA65_ECDSA_brainpoolP256r1_SHA256, MiscObjectIdentifiers.id_MLDSA65_ECDSA_brainpoolP256r1_SHA256);
compositeNameASN1IdentifierMap.put(CompositeName.MLDSA65_RSA3072_PSS_SHA512, MiscObjectIdentifiers.id_MLDSA65_RSA3072_PSS_SHA512);
compositeNameASN1IdentifierMap.put(CompositeName.MLDSA65_RSA3072_PKCS15_SHA512, MiscObjectIdentifiers.id_MLDSA65_RSA3072_PKCS15_SHA512);
compositeNameASN1IdentifierMap.put(CompositeName.MLDSA65_ECDSA_P256_SHA512, MiscObjectIdentifiers.id_MLDSA65_ECDSA_P256_SHA512);
compositeNameASN1IdentifierMap.put(CompositeName.MLDSA65_ECDSA_brainpoolP256r1_SHA512, MiscObjectIdentifiers.id_MLDSA65_ECDSA_brainpoolP256r1_SHA512);
compositeNameASN1IdentifierMap.put(CompositeName.MLDSA65_Ed25519_SHA512, MiscObjectIdentifiers.id_MLDSA65_Ed25519_SHA512);
compositeNameASN1IdentifierMap.put(CompositeName.MLDSA87_ECDSA_P384_SHA384, MiscObjectIdentifiers.id_MLDSA87_ECDSA_P384_SHA384);
compositeNameASN1IdentifierMap.put(CompositeName.MLDSA87_ECDSA_brainpoolP384r1_SHA384, MiscObjectIdentifiers.id_MLDSA87_ECDSA_brainpoolP384r1_SHA384);
compositeNameASN1IdentifierMap.put(CompositeName.MLDSA87_Ed448_SHAKE256, MiscObjectIdentifiers.id_MLDSA87_Ed448_SHAKE256);
compositeNameASN1IdentifierMap.put(CompositeName.MLDSA87_ECDSA_P384_SHA512, MiscObjectIdentifiers.id_MLDSA87_ECDSA_P384_SHA512);
compositeNameASN1IdentifierMap.put(CompositeName.MLDSA87_ECDSA_brainpoolP384r1_SHA512, MiscObjectIdentifiers.id_MLDSA87_ECDSA_brainpoolP384r1_SHA512);
compositeNameASN1IdentifierMap.put(CompositeName.MLDSA87_Ed448_SHA512, MiscObjectIdentifiers.id_MLDSA87_Ed448_SHA512);
compositeNameASN1IdentifierMap.put(CompositeName.Falcon512_ECDSA_P256_SHA256, MiscObjectIdentifiers.id_Falcon512_ECDSA_P256_SHA256);
compositeNameASN1IdentifierMap.put(CompositeName.Falcon512_ECDSA_brainpoolP256r1_SHA256, MiscObjectIdentifiers.id_Falcon512_ECDSA_brainpoolP256r1_SHA256);
compositeNameASN1IdentifierMap.put(CompositeName.Falcon512_Ed25519_SHA512, MiscObjectIdentifiers.id_Falcon512_Ed25519_SHA512);
Expand All @@ -66,23 +98,6 @@ public enum CompositeName
}
}

/**
* Map from CompositeName to OID name from https://www.ietf.org/archive/id/draft-ounsworth-pq-composite-sigs-10.html.
* CompositeName enum value is converted to string, prefixed with "id-" and "_" replaced with "-".
* These strings are used in the signing/verification process as a prefix for the message.
*/
public static final HashMap<CompositeName, String> compositeNameOIDStringMap;

static
{
compositeNameOIDStringMap = new HashMap<>();

for (CompositeName algName : CompositeName.values())
{
compositeNameOIDStringMap.put(algName, "id-" + algName.name().replace("_", "-"));
}
}

/**
* Map from ASN1 identifier to a readable string used as the composite signature name for the JCA/JCE API.
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -178,23 +178,23 @@ private List<KeyFactory> getKeyFactoriesFromIdentifier(ASN1ObjectIdentifier algo
algorithmNames.add("Dilithium");
algorithmNames.add("Ed25519");
break;
case MLDSA87_Ed448_SHAKE256:
case MLDSA87_Ed448_SHA512:
algorithmNames.add("Dilithium");
algorithmNames.add("Ed448");
break;
case MLDSA44_RSA2048_PSS_SHA256:
case MLDSA44_RSA2048_PKCS15_SHA256:
case MLDSA65_RSA3072_PSS_SHA256:
case MLDSA65_RSA3072_PKCS15_SHA256:
case MLDSA65_RSA3072_PSS_SHA512:
case MLDSA65_RSA3072_PKCS15_SHA512:
algorithmNames.add("Dilithium");
algorithmNames.add("RSA");
break;
case MLDSA44_ECDSA_P256_SHA256:
case MLDSA44_ECDSA_brainpoolP256r1_SHA256:
case MLDSA65_ECDSA_P256_SHA256:
case MLDSA65_ECDSA_brainpoolP256r1_SHA256:
case MLDSA87_ECDSA_P384_SHA384:
case MLDSA87_ECDSA_brainpoolP384r1_SHA384:
case MLDSA65_ECDSA_P256_SHA512:
case MLDSA65_ECDSA_brainpoolP256r1_SHA512:
case MLDSA87_ECDSA_P384_SHA512:
case MLDSA87_ECDSA_brainpoolP384r1_SHA512:
algorithmNames.add("Dilithium");
algorithmNames.add("ECDSA");
break;
Expand Down Expand Up @@ -254,28 +254,28 @@ private X509EncodedKeySpec[] getKeysSpecs(ASN1ObjectIdentifier algorithmIdentifi
keyInfos[0] = new SubjectPublicKeyInfo(dilithium3Identifier, subjectPublicKeys[0]);
keyInfos[1] = new SubjectPublicKeyInfo(ed25519Identifier, subjectPublicKeys[1]);
break;
case MLDSA65_ECDSA_P256_SHA256:
case MLDSA65_ECDSA_P256_SHA512:
keyInfos[0] = new SubjectPublicKeyInfo(dilithium3Identifier, subjectPublicKeys[0]);
keyInfos[1] = new SubjectPublicKeyInfo(ecdsaP256Identifier, subjectPublicKeys[1]);
break;
case MLDSA65_ECDSA_brainpoolP256r1_SHA256:
case MLDSA65_ECDSA_brainpoolP256r1_SHA512:
keyInfos[0] = new SubjectPublicKeyInfo(dilithium3Identifier, subjectPublicKeys[0]);
keyInfos[1] = new SubjectPublicKeyInfo(ecdsaBrainpoolP256r1Identifier, subjectPublicKeys[1]);
break;
case MLDSA65_RSA3072_PSS_SHA256:
case MLDSA65_RSA3072_PKCS15_SHA256:
case MLDSA65_RSA3072_PSS_SHA512:
case MLDSA65_RSA3072_PKCS15_SHA512:
keyInfos[0] = new SubjectPublicKeyInfo(dilithium3Identifier, subjectPublicKeys[0]);
keyInfos[1] = new SubjectPublicKeyInfo(rsaIdentifier, subjectPublicKeys[1]);
break;
case MLDSA87_Ed448_SHAKE256:
case MLDSA87_Ed448_SHA512:
keyInfos[0] = new SubjectPublicKeyInfo(dilithium5Identifier, subjectPublicKeys[0]);
keyInfos[1] = new SubjectPublicKeyInfo(ed448Identifier, subjectPublicKeys[1]);
break;
case MLDSA87_ECDSA_P384_SHA384:
case MLDSA87_ECDSA_P384_SHA512:
keyInfos[0] = new SubjectPublicKeyInfo(dilithium5Identifier, subjectPublicKeys[0]);
keyInfos[1] = new SubjectPublicKeyInfo(ecdsaP384Identifier, subjectPublicKeys[1]);
break;
case MLDSA87_ECDSA_brainpoolP384r1_SHA384:
case MLDSA87_ECDSA_brainpoolP384r1_SHA512:
keyInfos[0] = new SubjectPublicKeyInfo(dilithium5Identifier, subjectPublicKeys[0]);
keyInfos[1] = new SubjectPublicKeyInfo(ecdsaBrainpoolP384r1Identifier, subjectPublicKeys[1]);
break;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ private void initializeParameters()
generators.get(0).initialize(DilithiumParameterSpec.dilithium3, this.secureRandom);
generators.get(1).initialize(256, this.secureRandom);
break;
case MLDSA87_Ed448_SHAKE256:
case MLDSA87_Ed448_SHA512:
generators.add(KeyPairGenerator.getInstance("Dilithium", "BC"));
generators.add(KeyPairGenerator.getInstance("Ed448", "BC"));
generators.get(0).initialize(DilithiumParameterSpec.dilithium5, this.secureRandom);
Expand All @@ -86,8 +86,8 @@ private void initializeParameters()
generators.get(0).initialize(DilithiumParameterSpec.dilithium2, this.secureRandom);
generators.get(1).initialize(2048, this.secureRandom);
break;
case MLDSA65_RSA3072_PSS_SHA256:
case MLDSA65_RSA3072_PKCS15_SHA256:
case MLDSA65_RSA3072_PSS_SHA512:
case MLDSA65_RSA3072_PKCS15_SHA512:
generators.add(KeyPairGenerator.getInstance("Dilithium", "BC"));
generators.add(KeyPairGenerator.getInstance("RSA", "BC"));
generators.get(0).initialize(DilithiumParameterSpec.dilithium3, this.secureRandom);
Expand All @@ -105,25 +105,25 @@ private void initializeParameters()
generators.get(0).initialize(DilithiumParameterSpec.dilithium2, this.secureRandom);
generators.get(1).initialize(new ECGenParameterSpec("brainpoolP256r1"), this.secureRandom);
break;
case MLDSA65_ECDSA_P256_SHA256:
case MLDSA65_ECDSA_P256_SHA512:
generators.add(KeyPairGenerator.getInstance("Dilithium", "BC"));
generators.add(KeyPairGenerator.getInstance("ECDSA", "BC"));
generators.get(0).initialize(DilithiumParameterSpec.dilithium3, this.secureRandom);
generators.get(1).initialize(new ECGenParameterSpec("P-256"), this.secureRandom);
break;
case MLDSA65_ECDSA_brainpoolP256r1_SHA256:
case MLDSA65_ECDSA_brainpoolP256r1_SHA512:
generators.add(KeyPairGenerator.getInstance("Dilithium", "BC"));
generators.add(KeyPairGenerator.getInstance("ECDSA", "BC"));
generators.get(0).initialize(DilithiumParameterSpec.dilithium3, this.secureRandom);
generators.get(1).initialize(new ECGenParameterSpec("brainpoolP256r1"), this.secureRandom);
break;
case MLDSA87_ECDSA_P384_SHA384:
case MLDSA87_ECDSA_P384_SHA512:
generators.add(KeyPairGenerator.getInstance("Dilithium", "BC"));
generators.add(KeyPairGenerator.getInstance("ECDSA", "BC"));
generators.get(0).initialize(DilithiumParameterSpec.dilithium5, this.secureRandom);
generators.get(1).initialize(new ECGenParameterSpec("P-384"), this.secureRandom);
break;
case MLDSA87_ECDSA_brainpoolP384r1_SHA384:
case MLDSA87_ECDSA_brainpoolP384r1_SHA512:
generators.add(KeyPairGenerator.getInstance("Dilithium", "BC"));
generators.add(KeyPairGenerator.getInstance("ECDSA", "BC"));
generators.get(0).initialize(DilithiumParameterSpec.dilithium5, this.secureRandom);
Expand Down Expand Up @@ -244,7 +244,7 @@ public static final class MLDSA87andEd448 extends KeyPairGeneratorSpi
{
public MLDSA87andEd448()
{
super(CompositeSignaturesConstants.CompositeName.MLDSA87_Ed448_SHAKE256);
super(CompositeSignaturesConstants.CompositeName.MLDSA87_Ed448_SHA512);
}
}

Expand All @@ -268,15 +268,15 @@ public static final class MLDSA65andRSA3072PSS extends KeyPairGeneratorSpi
{
public MLDSA65andRSA3072PSS()
{
super(CompositeSignaturesConstants.CompositeName.MLDSA65_RSA3072_PSS_SHA256);
super(CompositeSignaturesConstants.CompositeName.MLDSA65_RSA3072_PSS_SHA512);
}
}

public static final class MLDSA65andRSA3072PKCS15 extends KeyPairGeneratorSpi
{
public MLDSA65andRSA3072PKCS15()
{
super(CompositeSignaturesConstants.CompositeName.MLDSA65_RSA3072_PKCS15_SHA256);
super(CompositeSignaturesConstants.CompositeName.MLDSA65_RSA3072_PKCS15_SHA512);
}
}

Expand All @@ -300,31 +300,31 @@ public static final class MLDSA65andECDSAP256 extends KeyPairGeneratorSpi
{
public MLDSA65andECDSAP256()
{
super(CompositeSignaturesConstants.CompositeName.MLDSA65_ECDSA_P256_SHA256);
super(CompositeSignaturesConstants.CompositeName.MLDSA65_ECDSA_P256_SHA512);
}
}

public static final class MLDSA65andECDSAbrainpoolP256r1 extends KeyPairGeneratorSpi
{
public MLDSA65andECDSAbrainpoolP256r1()
{
super(CompositeSignaturesConstants.CompositeName.MLDSA65_ECDSA_brainpoolP256r1_SHA256);
super(CompositeSignaturesConstants.CompositeName.MLDSA65_ECDSA_brainpoolP256r1_SHA512);
}
}

public static final class MLDSA87andECDSAP384 extends KeyPairGeneratorSpi
{
public MLDSA87andECDSAP384()
{
super(CompositeSignaturesConstants.CompositeName.MLDSA87_ECDSA_P384_SHA384);
super(CompositeSignaturesConstants.CompositeName.MLDSA87_ECDSA_P384_SHA512);
}
}

public static final class MLDSA87andECDSAbrainpoolP384r1 extends KeyPairGeneratorSpi
{
public MLDSA87andECDSAbrainpoolP384r1()
{
super(CompositeSignaturesConstants.CompositeName.MLDSA87_ECDSA_brainpoolP384r1_SHA384);
super(CompositeSignaturesConstants.CompositeName.MLDSA87_ECDSA_brainpoolP384r1_SHA512);
}
}

Expand Down
Loading

0 comments on commit 74f76d6

Please sign in to comment.