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
public class SignatureSpi extends java.security.SignatureSpiSignature class for composite signatures. Selected algorithm is set by the "subclasses" at the end of this file.
-
-
Nested Class Summary
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected java.lang.ObjectengineGetParameter(java.lang.String s)protected java.security.AlgorithmParametersengineGetParameters()protected voidengineInitSign(java.security.PrivateKey privateKey)protected voidengineInitSign(java.security.PrivateKey privateKey, java.security.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(java.security.PublicKey publicKey)protected voidengineSetParameter(java.lang.String s, java.lang.Object o)protected voidengineSetParameter(java.security.spec.AlgorithmParameterSpec algorithmParameterSpec)Set the signature context, either before or after engineInitSign / engineInitVerify.protected byte[]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.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)
-
-
-
Method Detail
-
engineInitVerify
protected void engineInitVerify(java.security.PublicKey publicKey) throws java.security.InvalidKeyException- Specified by:
engineInitVerifyin classjava.security.SignatureSpi- Throws:
java.security.InvalidKeyException
-
engineInitSign
protected void engineInitSign(java.security.PrivateKey privateKey) throws java.security.InvalidKeyException- Specified by:
engineInitSignin classjava.security.SignatureSpi- Throws:
java.security.InvalidKeyException
-
engineInitSign
protected void engineInitSign(java.security.PrivateKey privateKey, java.security.SecureRandom random) throws java.security.InvalidKeyExceptionThe 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 classjava.security.SignatureSpi- Throws:
java.security.InvalidKeyException
-
engineUpdate
protected void engineUpdate(byte b) throws java.security.SignatureException- Specified by:
engineUpdatein classjava.security.SignatureSpi- Throws:
java.security.SignatureException
-
engineUpdate
protected void engineUpdate(byte[] bytes, int off, int len) throws java.security.SignatureException- Specified by:
engineUpdatein classjava.security.SignatureSpi- Throws:
java.security.SignatureException
-
engineSign
protected byte[] engineSign() throws java.security.SignatureExceptionMethod 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 classjava.security.SignatureSpi- Returns:
- composite signature bytes
- Throws:
java.security.SignatureException
-
splitCompositeSignature
public static byte[][] splitCompositeSignature(byte[] compositeSignature, int mldsaSigLen)
-
engineVerify
protected boolean engineVerify(byte[] signature) throws java.security.SignatureExceptionCorresponding 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 classjava.security.SignatureSpi- Parameters:
signature- the signature bytes to be verified.- Returns:
- Throws:
java.security.SignatureException
-
engineSetParameter
protected void engineSetParameter(java.security.spec.AlgorithmParameterSpec algorithmParameterSpec) throws java.security.InvalidAlgorithmParameterExceptionSet 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 classjava.security.SignatureSpi- Throws:
java.security.InvalidAlgorithmParameterException
-
engineSetParameter
protected void engineSetParameter(java.lang.String s, java.lang.Object o) throws java.security.InvalidParameterException- Specified by:
engineSetParameterin classjava.security.SignatureSpi- Throws:
java.security.InvalidParameterException
-
engineGetParameter
protected java.lang.Object engineGetParameter(java.lang.String s) throws java.security.InvalidParameterException- Specified by:
engineGetParameterin classjava.security.SignatureSpi- Throws:
java.security.InvalidParameterException
-
engineGetParameters
protected final java.security.AlgorithmParameters engineGetParameters()
- Overrides:
engineGetParametersin classjava.security.SignatureSpi
-
-