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

package org.bouncycastle.cms;

import org.bouncycastle.asn1.rosstandart.RosstandartObjectIdentifiers;
import org.bouncycastle.asn1.cryptopro.CryptoProObjectIdentifiers;
import org.bouncycastle.asn1.x509.X509ObjectIdentifiers;
import org.bouncycastle.asn1.teletrust.TeleTrusTObjectIdentifiers;
import org.bouncycastle.asn1.eac.EACObjectIdentifiers;
import org.bouncycastle.asn1.x9.X9ObjectIdentifiers;
import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers;
import org.bouncycastle.asn1.oiw.OIWObjectIdentifiers;
import org.bouncycastle.asn1.nist.NISTObjectIdentifiers;
import java.util.HashMap;
import org.bouncycastle.asn1.cms.OtherRevocationInfoFormat;
import org.bouncycastle.cert.X509CRLHolder;
import org.bouncycastle.asn1.x509.CertificateList;
import org.bouncycastle.cert.X509AttributeCertificateHolder;
import org.bouncycastle.asn1.x509.AttributeCertificate;
import org.bouncycastle.asn1.ASN1TaggedObject;
import org.bouncycastle.asn1.ASN1Primitive;
import java.util.Enumeration;
import java.util.Collection;
import org.bouncycastle.util.CollectionStore;
import org.bouncycastle.cert.X509CertificateHolder;
import org.bouncycastle.asn1.x509.Certificate;
import org.bouncycastle.asn1.ASN1Sequence;
import java.util.ArrayList;
import org.bouncycastle.util.Store;
import org.bouncycastle.asn1.ASN1Set;
import org.bouncycastle.asn1.ASN1Encodable;
import org.bouncycastle.asn1.DERNull;
import org.bouncycastle.operator.DigestAlgorithmIdentifierFinder;
import org.bouncycastle.asn1.x509.AlgorithmIdentifier;
import org.bouncycastle.asn1.ASN1ObjectIdentifier;
import java.util.Map;

class CMSSignedHelper
{
    static final CMSSignedHelper INSTANCE;
    private static final Map encryptionAlgs;
    
    private static void addEntries(final ASN1ObjectIdentifier asn1ObjectIdentifier, final String s) {
        CMSSignedHelper.encryptionAlgs.put(asn1ObjectIdentifier.getId(), s);
    }
    
    String getEncryptionAlgName(final String s) {
        final String s2 = CMSSignedHelper.encryptionAlgs.get(s);
        if (s2 != null) {
            return s2;
        }
        return s;
    }
    
    AlgorithmIdentifier fixDigestAlgID(final AlgorithmIdentifier algorithmIdentifier, final DigestAlgorithmIdentifierFinder digestAlgorithmIdentifierFinder) {
        final ASN1Encodable parameters = algorithmIdentifier.getParameters();
        if (parameters == null || DERNull.INSTANCE.equals(parameters)) {
            return digestAlgorithmIdentifierFinder.find(algorithmIdentifier.getAlgorithm());
        }
        return algorithmIdentifier;
    }
    
    void setSigningEncryptionAlgorithmMapping(final ASN1ObjectIdentifier asn1ObjectIdentifier, final String s) {
        addEntries(asn1ObjectIdentifier, s);
    }
    
    Store getCertificates(final ASN1Set set) {
        if (set != null) {
            final ArrayList list = new ArrayList(set.size());
            final Enumeration objects = set.getObjects();
            while (objects.hasMoreElements()) {
                final ASN1Primitive asn1Primitive = objects.nextElement().toASN1Primitive();
                if (asn1Primitive instanceof ASN1Sequence) {
                    list.add(new X509CertificateHolder(Certificate.getInstance(asn1Primitive)));
                }
            }
            return new CollectionStore(list);
        }
        return new CollectionStore(new ArrayList());
    }
    
    Store getAttributeCertificates(final ASN1Set set) {
        if (set != null) {
            final ArrayList list = new ArrayList(set.size());
            final Enumeration objects = set.getObjects();
            while (objects.hasMoreElements()) {
                final ASN1Primitive asn1Primitive = objects.nextElement().toASN1Primitive();
                if (asn1Primitive instanceof ASN1TaggedObject) {
                    final ASN1TaggedObject asn1TaggedObject = (ASN1TaggedObject)asn1Primitive;
                    if (asn1TaggedObject.getTagNo() != 1 && asn1TaggedObject.getTagNo() != 2) {
                        continue;
                    }
                    list.add(new X509AttributeCertificateHolder(AttributeCertificate.getInstance(asn1TaggedObject.getBaseUniversal(false, 16))));
                }
            }
            return new CollectionStore(list);
        }
        return new CollectionStore(new ArrayList());
    }
    
    Store getCRLs(final ASN1Set set) {
        if (set != null) {
            final ArrayList list = new ArrayList(set.size());
            final Enumeration objects = set.getObjects();
            while (objects.hasMoreElements()) {
                final ASN1Primitive asn1Primitive = objects.nextElement().toASN1Primitive();
                if (asn1Primitive instanceof ASN1Sequence) {
                    list.add(new X509CRLHolder(CertificateList.getInstance(asn1Primitive)));
                }
            }
            return new CollectionStore(list);
        }
        return new CollectionStore(new ArrayList());
    }
    
    Store getOtherRevocationInfo(final ASN1ObjectIdentifier asn1ObjectIdentifier, final ASN1Set set) {
        if (set != null) {
            final ArrayList list = new ArrayList(set.size());
            final Enumeration objects = set.getObjects();
            while (objects.hasMoreElements()) {
                final ASN1Primitive asn1Primitive = objects.nextElement().toASN1Primitive();
                if (asn1Primitive instanceof ASN1TaggedObject) {
                    final ASN1TaggedObject instance = ASN1TaggedObject.getInstance(asn1Primitive);
                    if (!instance.hasContextTag(1)) {
                        continue;
                    }
                    final OtherRevocationInfoFormat instance2 = OtherRevocationInfoFormat.getInstance(instance, false);
                    if (!asn1ObjectIdentifier.equals(instance2.getInfoFormat())) {
                        continue;
                    }
                    list.add(instance2.getInfo());
                }
            }
            return new CollectionStore(list);
        }
        return new CollectionStore(new ArrayList());
    }
    
    static {
        INSTANCE = new CMSSignedHelper();
        encryptionAlgs = new HashMap();
        addEntries(NISTObjectIdentifiers.dsa_with_sha224, "DSA");
        addEntries(NISTObjectIdentifiers.dsa_with_sha256, "DSA");
        addEntries(NISTObjectIdentifiers.dsa_with_sha384, "DSA");
        addEntries(NISTObjectIdentifiers.dsa_with_sha512, "DSA");
        addEntries(NISTObjectIdentifiers.id_dsa_with_sha3_224, "DSA");
        addEntries(NISTObjectIdentifiers.id_dsa_with_sha3_256, "DSA");
        addEntries(NISTObjectIdentifiers.id_dsa_with_sha3_384, "DSA");
        addEntries(NISTObjectIdentifiers.id_dsa_with_sha3_512, "DSA");
        addEntries(OIWObjectIdentifiers.dsaWithSHA1, "DSA");
        addEntries(OIWObjectIdentifiers.md4WithRSA, "RSA");
        addEntries(OIWObjectIdentifiers.md4WithRSAEncryption, "RSA");
        addEntries(OIWObjectIdentifiers.md5WithRSA, "RSA");
        addEntries(OIWObjectIdentifiers.sha1WithRSA, "RSA");
        addEntries(PKCSObjectIdentifiers.md2WithRSAEncryption, "RSA");
        addEntries(PKCSObjectIdentifiers.md4WithRSAEncryption, "RSA");
        addEntries(PKCSObjectIdentifiers.md5WithRSAEncryption, "RSA");
        addEntries(PKCSObjectIdentifiers.sha1WithRSAEncryption, "RSA");
        addEntries(PKCSObjectIdentifiers.sha224WithRSAEncryption, "RSA");
        addEntries(PKCSObjectIdentifiers.sha256WithRSAEncryption, "RSA");
        addEntries(PKCSObjectIdentifiers.sha384WithRSAEncryption, "RSA");
        addEntries(PKCSObjectIdentifiers.sha512WithRSAEncryption, "RSA");
        addEntries(NISTObjectIdentifiers.id_rsassa_pkcs1_v1_5_with_sha3_224, "RSA");
        addEntries(NISTObjectIdentifiers.id_rsassa_pkcs1_v1_5_with_sha3_256, "RSA");
        addEntries(NISTObjectIdentifiers.id_rsassa_pkcs1_v1_5_with_sha3_384, "RSA");
        addEntries(NISTObjectIdentifiers.id_rsassa_pkcs1_v1_5_with_sha3_512, "RSA");
        addEntries(X9ObjectIdentifiers.ecdsa_with_SHA1, "ECDSA");
        addEntries(X9ObjectIdentifiers.ecdsa_with_SHA224, "ECDSA");
        addEntries(X9ObjectIdentifiers.ecdsa_with_SHA256, "ECDSA");
        addEntries(X9ObjectIdentifiers.ecdsa_with_SHA384, "ECDSA");
        addEntries(X9ObjectIdentifiers.ecdsa_with_SHA512, "ECDSA");
        addEntries(NISTObjectIdentifiers.id_ecdsa_with_sha3_224, "ECDSA");
        addEntries(NISTObjectIdentifiers.id_ecdsa_with_sha3_256, "ECDSA");
        addEntries(NISTObjectIdentifiers.id_ecdsa_with_sha3_384, "ECDSA");
        addEntries(NISTObjectIdentifiers.id_ecdsa_with_sha3_512, "ECDSA");
        addEntries(X9ObjectIdentifiers.id_dsa_with_sha1, "DSA");
        addEntries(EACObjectIdentifiers.id_TA_ECDSA_SHA_1, "ECDSA");
        addEntries(EACObjectIdentifiers.id_TA_ECDSA_SHA_224, "ECDSA");
        addEntries(EACObjectIdentifiers.id_TA_ECDSA_SHA_256, "ECDSA");
        addEntries(EACObjectIdentifiers.id_TA_ECDSA_SHA_384, "ECDSA");
        addEntries(EACObjectIdentifiers.id_TA_ECDSA_SHA_512, "ECDSA");
        addEntries(EACObjectIdentifiers.id_TA_RSA_v1_5_SHA_1, "RSA");
        addEntries(EACObjectIdentifiers.id_TA_RSA_v1_5_SHA_256, "RSA");
        addEntries(EACObjectIdentifiers.id_TA_RSA_PSS_SHA_1, "RSAandMGF1");
        addEntries(EACObjectIdentifiers.id_TA_RSA_PSS_SHA_256, "RSAandMGF1");
        addEntries(X9ObjectIdentifiers.id_dsa, "DSA");
        addEntries(PKCSObjectIdentifiers.rsaEncryption, "RSA");
        addEntries(TeleTrusTObjectIdentifiers.teleTrusTRSAsignatureAlgorithm, "RSA");
        addEntries(X509ObjectIdentifiers.id_ea_rsa, "RSA");
        addEntries(PKCSObjectIdentifiers.id_RSASSA_PSS, "RSAandMGF1");
        addEntries(CryptoProObjectIdentifiers.gostR3410_94, "GOST3410");
        addEntries(CryptoProObjectIdentifiers.gostR3410_2001, "ECGOST3410");
        addEntries(new ASN1ObjectIdentifier("1.3.6.1.4.1.5849.1.6.2"), "ECGOST3410");
        addEntries(new ASN1ObjectIdentifier("1.3.6.1.4.1.5849.1.1.5"), "GOST3410");
        addEntries(RosstandartObjectIdentifiers.id_tc26_gost_3410_12_256, "ECGOST3410-2012-256");
        addEntries(RosstandartObjectIdentifiers.id_tc26_gost_3410_12_512, "ECGOST3410-2012-512");
        addEntries(CryptoProObjectIdentifiers.gostR3411_94_with_gostR3410_2001, "ECGOST3410");
        addEntries(CryptoProObjectIdentifiers.gostR3411_94_with_gostR3410_94, "GOST3410");
        addEntries(RosstandartObjectIdentifiers.id_tc26_signwithdigest_gost_3410_12_256, "ECGOST3410-2012-256");
        addEntries(RosstandartObjectIdentifiers.id_tc26_signwithdigest_gost_3410_12_512, "ECGOST3410-2012-512");
    }
}
