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

package org.bouncycastle.pqc.crypto.xmss;

import java.util.HashMap;
import org.bouncycastle.crypto.digests.SHAKEDigest;
import org.bouncycastle.crypto.digests.SHA512Digest;
import org.bouncycastle.crypto.digests.SHA256Digest;
import org.bouncycastle.asn1.ASN1Primitive;
import org.bouncycastle.asn1.nist.NISTObjectIdentifiers;
import org.bouncycastle.crypto.Digest;
import org.bouncycastle.asn1.ASN1ObjectIdentifier;
import java.util.Map;

class DigestUtil
{
    private static Map<String, ASN1ObjectIdentifier> nameToOid;
    private static Map<ASN1ObjectIdentifier, String> oidToName;
    
    static Digest getDigest(final ASN1ObjectIdentifier obj) {
        if (obj.equals(NISTObjectIdentifiers.id_sha256)) {
            return new SHA256Digest();
        }
        if (obj.equals(NISTObjectIdentifiers.id_sha512)) {
            return new SHA512Digest();
        }
        if (obj.equals(NISTObjectIdentifiers.id_shake128)) {
            return new SHAKEDigest(128);
        }
        if (obj.equals(NISTObjectIdentifiers.id_shake256)) {
            return new SHAKEDigest(256);
        }
        throw new IllegalArgumentException("unrecognized digest OID: " + obj);
    }
    
    static String getDigestName(final ASN1ObjectIdentifier obj) {
        final String s = DigestUtil.oidToName.get(obj);
        if (s != null) {
            return s;
        }
        throw new IllegalArgumentException("unrecognized digest oid: " + obj);
    }
    
    static ASN1ObjectIdentifier getDigestOID(final String str) {
        final ASN1ObjectIdentifier asn1ObjectIdentifier = DigestUtil.nameToOid.get(str);
        if (asn1ObjectIdentifier != null) {
            return asn1ObjectIdentifier;
        }
        throw new IllegalArgumentException("unrecognized digest name: " + str);
    }
    
    static {
        DigestUtil.nameToOid = new HashMap<String, ASN1ObjectIdentifier>();
        DigestUtil.oidToName = new HashMap<ASN1ObjectIdentifier, String>();
        DigestUtil.nameToOid.put("SHA-256", NISTObjectIdentifiers.id_sha256);
        DigestUtil.nameToOid.put("SHA-512", NISTObjectIdentifiers.id_sha512);
        DigestUtil.nameToOid.put("SHAKE128", NISTObjectIdentifiers.id_shake128);
        DigestUtil.nameToOid.put("SHAKE256", NISTObjectIdentifiers.id_shake256);
        DigestUtil.oidToName.put(NISTObjectIdentifiers.id_sha256, "SHA-256");
        DigestUtil.oidToName.put(NISTObjectIdentifiers.id_sha512, "SHA-512");
        DigestUtil.oidToName.put(NISTObjectIdentifiers.id_shake128, "SHAKE128");
        DigestUtil.oidToName.put(NISTObjectIdentifiers.id_shake256, "SHAKE256");
    }
}
