
org.bouncycastle.jcajce.provider.asymmetric.CompositeSignatures Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of bcprov-jdk15to18 Show documentation
Show all versions of bcprov-jdk15to18 Show documentation
The Bouncy Castle Crypto package is a Java implementation of cryptographic algorithms. This jar contains JCE provider and lightweight API for the Bouncy Castle Cryptography APIs for JDK 1.5 to JDK 1.8.
The newest version!
package org.bouncycastle.jcajce.provider.asymmetric;
import java.util.HashMap;
import java.util.Map;
import org.bouncycastle.asn1.ASN1ObjectIdentifier;
import org.bouncycastle.jcajce.provider.asymmetric.compositesignatures.CompositeIndex;
import org.bouncycastle.jcajce.provider.asymmetric.compositesignatures.KeyFactorySpi;
import org.bouncycastle.jcajce.provider.config.ConfigurableProvider;
import org.bouncycastle.jcajce.provider.util.AsymmetricAlgorithmProvider;
/**
* Experimental implementation of composite signatures according to https://www.ietf.org/archive/id/draft-ounsworth-pq-composite-sigs-13.
*/
public class CompositeSignatures
{
private static final String PREFIX = "org.bouncycastle.jcajce.provider.asymmetric" + ".compositesignatures.";
private static final Map compositesAttributes = new HashMap();
static
{
compositesAttributes.put("SupportedKeyClasses", "org.bouncycastle.jcajce.CompositePublicKey|org.bouncycastle.jcajce.CompositePrivateKey");
compositesAttributes.put("SupportedKeyFormats", "PKCS#8|X.509");
}
public static class Mappings
extends AsymmetricAlgorithmProvider
{
public Mappings()
{
}
public void configure(ConfigurableProvider provider)
{
for (ASN1ObjectIdentifier oid : CompositeIndex.getSupportedIdentifiers())
{
String algorithmName = CompositeIndex.getAlgorithmName(oid);
String className = algorithmName.replace('-', '_');
provider.addAlgorithm("Alg.Alias.KeyFactory", oid, "COMPOSITE");
provider.addAlgorithm("Alg.Alias.KeyFactory." + algorithmName, "COMPOSITE");
provider.addAlgorithm("KeyPairGenerator." + algorithmName, PREFIX + "KeyPairGeneratorSpi$" + className);
provider.addAlgorithm("Alg.Alias.KeyPairGenerator", oid, algorithmName);
provider.addAlgorithm("Signature." + algorithmName, PREFIX + "SignatureSpi$" + className);
provider.addAlgorithm("Alg.Alias.Signature", oid, algorithmName);
provider.addKeyInfoConverter(oid, new KeyFactorySpi());
}
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy