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

package org.bouncycastle.pqc.jcajce.provider.util;

import org.bouncycastle.pqc.crypto.util.PrivateKeyInfoFactory;
import org.bouncycastle.asn1.ASN1Set;
import org.bouncycastle.asn1.pkcs.PrivateKeyInfo;
import org.bouncycastle.pqc.crypto.util.SubjectPublicKeyInfoFactory;
import org.bouncycastle.crypto.params.AsymmetricKeyParameter;
import org.bouncycastle.asn1.x509.SubjectPublicKeyInfo;
import org.bouncycastle.asn1.ASN1Encodable;
import org.bouncycastle.asn1.x509.AlgorithmIdentifier;

public class KeyUtil
{
    public static byte[] getEncodedSubjectPublicKeyInfo(final AlgorithmIdentifier algorithmIdentifier, final ASN1Encodable asn1Encodable) {
        try {
            return getEncodedSubjectPublicKeyInfo(new SubjectPublicKeyInfo(algorithmIdentifier, asn1Encodable));
        }
        catch (final Exception ex) {
            return null;
        }
    }
    
    public static byte[] getEncodedSubjectPublicKeyInfo(final AlgorithmIdentifier algorithmIdentifier, final byte[] array) {
        try {
            return getEncodedSubjectPublicKeyInfo(new SubjectPublicKeyInfo(algorithmIdentifier, array));
        }
        catch (final Exception ex) {
            return null;
        }
    }
    
    public static byte[] getEncodedSubjectPublicKeyInfo(final SubjectPublicKeyInfo subjectPublicKeyInfo) {
        try {
            return subjectPublicKeyInfo.getEncoded("DER");
        }
        catch (final Exception ex) {
            return null;
        }
    }
    
    public static byte[] getEncodedSubjectPublicKeyInfo(final AsymmetricKeyParameter asymmetricKeyParameter) {
        if (asymmetricKeyParameter.isPrivate()) {
            throw new IllegalArgumentException("private key found");
        }
        try {
            return getEncodedSubjectPublicKeyInfo(SubjectPublicKeyInfoFactory.createSubjectPublicKeyInfo(asymmetricKeyParameter));
        }
        catch (final Exception ex) {
            return null;
        }
    }
    
    public static byte[] getEncodedPrivateKeyInfo(final AlgorithmIdentifier algorithmIdentifier, final ASN1Encodable asn1Encodable) {
        try {
            return getEncodedPrivateKeyInfo(new PrivateKeyInfo(algorithmIdentifier, asn1Encodable.toASN1Primitive()));
        }
        catch (final Exception ex) {
            return null;
        }
    }
    
    public static byte[] getEncodedPrivateKeyInfo(final PrivateKeyInfo privateKeyInfo) {
        try {
            return privateKeyInfo.getEncoded("DER");
        }
        catch (final Exception ex) {
            return null;
        }
    }
    
    public static byte[] getEncodedPrivateKeyInfo(final AsymmetricKeyParameter asymmetricKeyParameter, final ASN1Set set) {
        if (!asymmetricKeyParameter.isPrivate()) {
            throw new IllegalArgumentException("public key found");
        }
        try {
            return getEncodedPrivateKeyInfo(PrivateKeyInfoFactory.createPrivateKeyInfo(asymmetricKeyParameter, set));
        }
        catch (final Exception ex) {
            return null;
        }
    }
}
