public ISignatureFactory <A> CreateSignatureFactory <A>(A algorithmDetails) where A : IParameters <Algorithm> { General.Utils.ApprovedModeCheck("service", algorithmDetails.Algorithm); General.Sphincs.SignatureParameters sigParams = algorithmDetails as General.Sphincs.SignatureParameters; AsymmetricSphincsKey key = (AsymmetricSphincsKey)privateKey; return((ISignatureFactory <A>) new SignatureFactory <General.Sphincs.SignatureParameters>(new General.Sphincs.SignatureParameters(sigParams, key.TreeDigestAlgorithm), new General.Sphincs.SignerProvider(sigParams, key))); }
public IVerifierFactory <A> CreateVerifierFactory <A>(A algorithmDetails) where A : IParameters <Algorithm> { General.Utils.ApprovedModeCheck("service", algorithmDetails.Algorithm); General.Sphincs.SignatureParameters algDets = algorithmDetails as General.Sphincs.SignatureParameters; if (algDets.DigestAlgorithm == FipsShs.Sha512 && publicKey.TreeDigestAlgorithm != FipsShs.Sha512_256) { throw new ArgumentException("public key not generated with compatible tree hash"); } if (algDets.DigestAlgorithm == FipsShs.Sha3_512 && publicKey.TreeDigestAlgorithm != FipsShs.Sha3_256) { throw new ArgumentException("public key not generated with compatible tree hash"); } return((IVerifierFactory <A>) new VerifierFactory <General.Sphincs.SignatureParameters>(algDets, new General.Sphincs.SignerProvider(algDets, publicKey))); }