Class SignatureSpi
java.lang.Object
java.security.SignatureSpi
org.bouncycastle.jcajce.provider.asymmetric.compositesignatures.SignatureSpi
- Direct Known Subclasses:
SignatureSpi.COMPOSITE, SignatureSpi.MLDSA44_ECDSA_P256_SHA256, SignatureSpi.MLDSA44_ECDSA_P256_SHA256_PREHASH, SignatureSpi.MLDSA44_Ed25519_SHA512, SignatureSpi.MLDSA44_Ed25519_SHA512_PREHASH, SignatureSpi.MLDSA44_RSA2048_PKCS15_SHA256, SignatureSpi.MLDSA44_RSA2048_PKCS15_SHA256_PREHASH, SignatureSpi.MLDSA44_RSA2048_PSS_SHA256, SignatureSpi.MLDSA44_RSA2048_PSS_SHA256_PREHASH, SignatureSpi.MLDSA65_ECDSA_brainpoolP256r1_SHA512, SignatureSpi.MLDSA65_ECDSA_brainpoolP256r1_SHA512_PREHASH, SignatureSpi.MLDSA65_ECDSA_P256_SHA512, SignatureSpi.MLDSA65_ECDSA_P256_SHA512_PREHASH, SignatureSpi.MLDSA65_ECDSA_P384_SHA512, SignatureSpi.MLDSA65_ECDSA_P384_SHA512_PREHASH, SignatureSpi.MLDSA65_Ed25519_SHA512, SignatureSpi.MLDSA65_Ed25519_SHA512_PREHASH, SignatureSpi.MLDSA65_RSA3072_PKCS15_SHA512, SignatureSpi.MLDSA65_RSA3072_PKCS15_SHA512_PREHASH, SignatureSpi.MLDSA65_RSA3072_PSS_SHA512, SignatureSpi.MLDSA65_RSA3072_PSS_SHA512_PREHASH, SignatureSpi.MLDSA65_RSA4096_PKCS15_SHA512, SignatureSpi.MLDSA65_RSA4096_PKCS15_SHA512_PREHASH, SignatureSpi.MLDSA65_RSA4096_PSS_SHA512, SignatureSpi.MLDSA65_RSA4096_PSS_SHA512_PREHASH, SignatureSpi.MLDSA87_ECDSA_brainpoolP384r1_SHA512, SignatureSpi.MLDSA87_ECDSA_brainpoolP384r1_SHA512_PREHASH, SignatureSpi.MLDSA87_ECDSA_P384_SHA512, SignatureSpi.MLDSA87_ECDSA_P384_SHA512_PREHASH, SignatureSpi.MLDSA87_ECDSA_P521_SHA512, SignatureSpi.MLDSA87_ECDSA_P521_SHA512_PREHASH, SignatureSpi.MLDSA87_Ed448_SHAKE256, SignatureSpi.MLDSA87_Ed448_SHAKE256_PREHASH, SignatureSpi.MLDSA87_RSA3072_PSS_SHA512, SignatureSpi.MLDSA87_RSA3072_PSS_SHA512_PREHASH, SignatureSpi.MLDSA87_RSA4096_PSS_SHA512, SignatureSpi.MLDSA87_RSA4096_PSS_SHA512_PREHASH
Signature class for composite signatures. Selected algorithm is set by the "subclasses" at the end of this file.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final classstatic final classstatic final classstatic final classstatic final classstatic final classstatic final classstatic final classstatic final classstatic final classstatic final classstatic final classstatic final classstatic final classstatic final classstatic final classstatic final classstatic final classstatic final classstatic final classstatic final classstatic final classstatic final classstatic final classstatic final classstatic final classstatic final classstatic final classstatic final classstatic final classstatic final classstatic final classstatic final classstatic final classstatic final classstatic final classstatic final class -
Field Summary
Fields inherited from class SignatureSpi
appRandom -
Method Summary
Modifier and TypeMethodDescriptionprotected Objectprotected final AlgorithmParametersprotected voidengineInitSign(PrivateKey privateKey) protected voidengineInitSign(PrivateKey privateKey, SecureRandom random) The JCA base class only records the SecureRandom in appRandom, where nothing would consult it, so the composite has to override this to hand the random down to each component signer.protected voidengineInitVerify(PublicKey publicKey) protected voidengineSetParameter(String s, Object o) protected voidengineSetParameter(AlgorithmParameterSpec algorithmParameterSpec) Set the signature context, either before or after engineInitSign / engineInitVerify.protected byte[]Method which calculates each component signature over the composite message representative M' and returns their concatenation, mldsaSig || tradSig, as the CompositeSignatureValue of draft-ietf-lamps-pq-composite-sigs sec.protected voidengineUpdate(byte b) protected voidengineUpdate(byte[] bytes, int off, int len) protected booleanengineVerify(byte[] signature) Corresponding verification method to the engineSign method.static byte[][]splitCompositeSignature(byte[] compositeSignature, int mldsaSigLen) Methods inherited from class SignatureSpi
clone, engineSign, engineUpdate, engineVerify
-
Method Details
-
engineInitVerify
- Specified by:
engineInitVerifyin classSignatureSpi- Throws:
InvalidKeyException
-
engineInitSign
- Specified by:
engineInitSignin classSignatureSpi- Throws:
InvalidKeyException
-
engineInitSign
protected void engineInitSign(PrivateKey privateKey, SecureRandom random) throws InvalidKeyException The JCA base class only records the SecureRandom in appRandom, where nothing would consult it, so the composite has to override this to hand the random down to each component signer.- Overrides:
engineInitSignin classSignatureSpi- Throws:
InvalidKeyException
-
engineUpdate
- Specified by:
engineUpdatein classSignatureSpi- Throws:
SignatureException
-
engineUpdate
- Specified by:
engineUpdatein classSignatureSpi- Throws:
SignatureException
-
engineSign
Method which calculates each component signature over the composite message representative M' and returns their concatenation, mldsaSig || tradSig, as the CompositeSignatureValue of draft-ietf-lamps-pq-composite-sigs sec. 4.2.- Specified by:
engineSignin classSignatureSpi- Returns:
- composite signature bytes
- Throws:
SignatureException
-
splitCompositeSignature
public static byte[][] splitCompositeSignature(byte[] compositeSignature, int mldsaSigLen) -
engineVerify
Corresponding verification method to the engineSign method. The composite signature is valid if and only if all component signatures are valid. The method verifies all component signatures even if it is already known that the composite signature is invalid.- Specified by:
engineVerifyin classSignatureSpi- Parameters:
signature- the signature bytes to be verified.- Returns:
- Throws:
SignatureException
-
engineSetParameter
protected void engineSetParameter(AlgorithmParameterSpec algorithmParameterSpec) throws InvalidAlgorithmParameterException Set the signature context, either before or after engineInitSign / engineInitVerify. Where the signature has a key already the component signatures are re-initialised with the new context at once; where it does not the context is recorded and applied when the key arrives, as the base ML-DSA and SLH-DSA engines do (see github #2396). Calling this first used to let a NullPointerException out of a method declared to throw InvalidAlgorithmParameterException, from dereferencing the key that was not there yet (github #2412).- Overrides:
engineSetParameterin classSignatureSpi- Throws:
InvalidAlgorithmParameterException
-
engineSetParameter
- Specified by:
engineSetParameterin classSignatureSpi- Throws:
InvalidParameterException
-
engineGetParameter
- Specified by:
engineGetParameterin classSignatureSpi- Throws:
InvalidParameterException
-
engineGetParameters
- Overrides:
engineGetParametersin classSignatureSpi
-