|
| 1 | +package org.bouncycastle.jcajce.provider.asymmetric; |
| 2 | + |
| 3 | +import org.bouncycastle.asn1.ASN1ObjectIdentifier; |
| 4 | +import org.bouncycastle.asn1.nist.NISTObjectIdentifiers; |
| 5 | +import org.bouncycastle.jcajce.provider.asymmetric.slhdsa.SLHDSAKeyFactorySpi; |
| 6 | +import org.bouncycastle.jcajce.provider.config.ConfigurableProvider; |
| 7 | +import org.bouncycastle.jcajce.provider.util.AsymmetricAlgorithmProvider; |
| 8 | +import org.bouncycastle.jcajce.provider.util.AsymmetricKeyInfoConverter; |
| 9 | + |
| 10 | +public class SLHDSA |
| 11 | +{ |
| 12 | + private static final String PREFIX = "org.bouncycastle.jcajce.provider.asymmetric" + ".slhdsa."; |
| 13 | + |
| 14 | + public static class Mappings |
| 15 | + extends AsymmetricAlgorithmProvider |
| 16 | + { |
| 17 | + public Mappings() |
| 18 | + { |
| 19 | + } |
| 20 | + |
| 21 | + public void configure(ConfigurableProvider provider) |
| 22 | + { |
| 23 | + provider.addAlgorithm("KeyFactory.SLH-DSA", PREFIX + "SLHDSAKeyFactorySpi"); |
| 24 | + provider.addAlgorithm("KeyPairGenerator.SLH-DSA", PREFIX + "SLHDSAKeyPairGeneratorSpi"); |
| 25 | + |
| 26 | + addKeyPairGeneratorAlgorithm(provider, "SLH-DSA-SHA2-128S", PREFIX + "SLHDSAKeyPairGeneratorSpi$Sha2_128s", NISTObjectIdentifiers.id_slh_dsa_sha2_128s); |
| 27 | + addKeyPairGeneratorAlgorithm(provider, "SLH-DSA-SHA2-128F", PREFIX + "SLHDSAKeyPairGeneratorSpi$Sha2_128f", NISTObjectIdentifiers.id_slh_dsa_sha2_128f); |
| 28 | + addKeyPairGeneratorAlgorithm(provider, "SLH-DSA-SHA2-192S", PREFIX + "SLHDSAKeyPairGeneratorSpi$Sha2_192s", NISTObjectIdentifiers.id_slh_dsa_sha2_192s); |
| 29 | + addKeyPairGeneratorAlgorithm(provider, "SLH-DSA-SHA2-192F", PREFIX + "SLHDSAKeyPairGeneratorSpi$Sha2_192f", NISTObjectIdentifiers.id_slh_dsa_sha2_192f); |
| 30 | + addKeyPairGeneratorAlgorithm(provider, "SLH-DSA-SHA2-256S", PREFIX + "SLHDSAKeyPairGeneratorSpi$Sha2_256s", NISTObjectIdentifiers.id_slh_dsa_sha2_256s); |
| 31 | + addKeyPairGeneratorAlgorithm(provider, "SLH-DSA-SHA2-256F", PREFIX + "SLHDSAKeyPairGeneratorSpi$Sha2_256f", NISTObjectIdentifiers.id_slh_dsa_sha2_256f); |
| 32 | + |
| 33 | + addKeyPairGeneratorAlgorithm(provider, "SLH-DSA-SHAKE-128S", PREFIX + "SLHDSAKeyPairGeneratorSpi$Shake_128s", NISTObjectIdentifiers.id_slh_dsa_shake_128s); |
| 34 | + addKeyPairGeneratorAlgorithm(provider, "SLH-DSA-SHAKE-128F", PREFIX + "SLHDSAKeyPairGeneratorSpi$Shake_128f", NISTObjectIdentifiers.id_slh_dsa_shake_128f); |
| 35 | + addKeyPairGeneratorAlgorithm(provider, "SLH-DSA-SHAKE-192S", PREFIX + "SLHDSAKeyPairGeneratorSpi$Shake_192s", NISTObjectIdentifiers.id_slh_dsa_shake_192s); |
| 36 | + addKeyPairGeneratorAlgorithm(provider, "SLH-DSA-SHAKE-192F", PREFIX + "SLHDSAKeyPairGeneratorSpi$Shake_192f", NISTObjectIdentifiers.id_slh_dsa_shake_192f); |
| 37 | + addKeyPairGeneratorAlgorithm(provider, "SLH-DSA-SHAKE-256S", PREFIX + "SLHDSAKeyPairGeneratorSpi$Shake_256s", NISTObjectIdentifiers.id_slh_dsa_shake_256s); |
| 38 | + addKeyPairGeneratorAlgorithm(provider, "SLH-DSA-SHAKE-256F", PREFIX + "SLHDSAKeyPairGeneratorSpi$Shake_256f", NISTObjectIdentifiers.id_slh_dsa_shake_256f); |
| 39 | + |
| 40 | + addSignatureAlgorithm(provider, "SLH-DSA", PREFIX + "SignatureSpi$Direct", (ASN1ObjectIdentifier)null); |
| 41 | + |
| 42 | + ASN1ObjectIdentifier[] nistOids = new ASN1ObjectIdentifier[] |
| 43 | + { |
| 44 | + NISTObjectIdentifiers.id_slh_dsa_sha2_128s, |
| 45 | + NISTObjectIdentifiers.id_slh_dsa_sha2_128f, |
| 46 | + NISTObjectIdentifiers.id_slh_dsa_shake_128s, |
| 47 | + NISTObjectIdentifiers.id_slh_dsa_shake_128f, |
| 48 | + NISTObjectIdentifiers.id_slh_dsa_sha2_192s, |
| 49 | + NISTObjectIdentifiers.id_slh_dsa_sha2_192f, |
| 50 | + NISTObjectIdentifiers.id_slh_dsa_shake_192s, |
| 51 | + NISTObjectIdentifiers.id_slh_dsa_shake_192f, |
| 52 | + NISTObjectIdentifiers.id_slh_dsa_sha2_256s, |
| 53 | + NISTObjectIdentifiers.id_slh_dsa_sha2_256f, |
| 54 | + NISTObjectIdentifiers.id_slh_dsa_shake_256s, |
| 55 | + NISTObjectIdentifiers.id_slh_dsa_shake_256f |
| 56 | + }; |
| 57 | + |
| 58 | + for (int i = 0; i != nistOids.length; i++) |
| 59 | + { |
| 60 | + provider.addAlgorithm("Alg.Alias.Signature." + nistOids[i], "SLH-DSA"); |
| 61 | + provider.addAlgorithm("Alg.Alias.Signature.OID." + nistOids[i], "SLH-DSA"); |
| 62 | + } |
| 63 | + |
| 64 | + AsymmetricKeyInfoConverter keyFact = new SLHDSAKeyFactorySpi(); |
| 65 | + |
| 66 | + registerKeyFactoryOid(provider, NISTObjectIdentifiers.id_slh_dsa_sha2_128s, "SLH-DSA", keyFact); |
| 67 | + registerKeyFactoryOid(provider, NISTObjectIdentifiers.id_slh_dsa_sha2_128f, "SLH-DSA", keyFact); |
| 68 | + registerKeyFactoryOid(provider, NISTObjectIdentifiers.id_slh_dsa_sha2_192s, "SLH-DSA", keyFact); |
| 69 | + registerKeyFactoryOid(provider, NISTObjectIdentifiers.id_slh_dsa_sha2_192f, "SLH-DSA", keyFact); |
| 70 | + registerKeyFactoryOid(provider, NISTObjectIdentifiers.id_slh_dsa_sha2_256s, "SLH-DSA", keyFact); |
| 71 | + registerKeyFactoryOid(provider, NISTObjectIdentifiers.id_slh_dsa_sha2_256f, "SLH-DSA", keyFact); |
| 72 | + registerKeyFactoryOid(provider, NISTObjectIdentifiers.id_slh_dsa_shake_128s, "SLH-DSA", keyFact); |
| 73 | + registerKeyFactoryOid(provider, NISTObjectIdentifiers.id_slh_dsa_shake_128f, "SLH-DSA", keyFact); |
| 74 | + registerKeyFactoryOid(provider, NISTObjectIdentifiers.id_slh_dsa_shake_192s, "SLH-DSA", keyFact); |
| 75 | + registerKeyFactoryOid(provider, NISTObjectIdentifiers.id_slh_dsa_shake_192f, "SLH-DSA", keyFact); |
| 76 | + registerKeyFactoryOid(provider, NISTObjectIdentifiers.id_slh_dsa_shake_256s, "SLH-DSA", keyFact); |
| 77 | + registerKeyFactoryOid(provider, NISTObjectIdentifiers.id_slh_dsa_shake_256f, "SLH-DSA", keyFact); |
| 78 | + } |
| 79 | + } |
| 80 | +} |
0 commit comments