// 
// Decompiled by Procyon v0.6.0
// 

package org.bouncycastle.jcajce.provider.asymmetric;

import java.util.Iterator;
import org.bouncycastle.jcajce.provider.util.AsymmetricKeyInfoConverter;
import org.bouncycastle.jcajce.provider.asymmetric.compositesignatures.KeyFactorySpi;
import org.bouncycastle.asn1.ASN1ObjectIdentifier;
import org.bouncycastle.jcajce.provider.asymmetric.compositesignatures.CompositeIndex;
import org.bouncycastle.jcajce.provider.config.ConfigurableProvider;
import org.bouncycastle.jcajce.provider.util.AsymmetricAlgorithmProvider;
import java.util.HashMap;
import java.util.Map;

public class CompositeSignatures
{
    private static final String PREFIX = "org.bouncycastle.jcajce.provider.asymmetric.compositesignatures.";
    private static final Map<String, String> compositesAttributes;
    
    static {
        (compositesAttributes = new HashMap<String, String>()).put("SupportedKeyClasses", "org.bouncycastle.jcajce.CompositePublicKey|org.bouncycastle.jcajce.CompositePrivateKey");
        CompositeSignatures.compositesAttributes.put("SupportedKeyFormats", "PKCS#8|X.509");
    }
    
    public static class Mappings extends AsymmetricAlgorithmProvider
    {
        @Override
        public void configure(final ConfigurableProvider configurableProvider) {
            configurableProvider.addAlgorithm("Signature.COMPOSITE", "org.bouncycastle.jcajce.provider.asymmetric.compositesignatures.SignatureSpi$COMPOSITE");
            for (final ASN1ObjectIdentifier asn1ObjectIdentifier : CompositeIndex.getSupportedIdentifiers()) {
                final String algorithmName = CompositeIndex.getAlgorithmName(asn1ObjectIdentifier);
                final String replace = algorithmName.replace('-', '_');
                configurableProvider.addAlgorithm("Alg.Alias.KeyFactory", asn1ObjectIdentifier, "COMPOSITE");
                configurableProvider.addAlgorithm("Alg.Alias.KeyFactory." + algorithmName, "COMPOSITE");
                configurableProvider.addAlgorithm("KeyPairGenerator." + algorithmName, "org.bouncycastle.jcajce.provider.asymmetric.compositesignatures.KeyPairGeneratorSpi$" + replace);
                configurableProvider.addAlgorithm("Alg.Alias.KeyPairGenerator", asn1ObjectIdentifier, algorithmName);
                configurableProvider.addAlgorithm("Signature." + algorithmName, "org.bouncycastle.jcajce.provider.asymmetric.compositesignatures.SignatureSpi$" + replace);
                configurableProvider.addAlgorithm("Alg.Alias.Signature", asn1ObjectIdentifier, algorithmName);
                configurableProvider.addAlgorithm("Signature." + algorithmName + "-PREHASH", "org.bouncycastle.jcajce.provider.asymmetric.compositesignatures.SignatureSpi$" + replace + "_PREHASH");
                configurableProvider.addKeyInfoConverter(asn1ObjectIdentifier, new KeyFactorySpi());
            }
        }
    }
}
