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

package org.bouncycastle.cert.cmp;

import org.bouncycastle.asn1.cmp.CertStatus;
import org.bouncycastle.asn1.cmp.PKIBody;
import org.bouncycastle.operator.DefaultDigestAlgorithmIdentifierFinder;
import org.bouncycastle.asn1.cmp.CertConfirmContent;
import org.bouncycastle.operator.DigestAlgorithmIdentifierFinder;

public class CertificateConfirmationContent
{
    private DigestAlgorithmIdentifierFinder digestAlgFinder;
    private CertConfirmContent content;
    
    public CertificateConfirmationContent(final CertConfirmContent certConfirmContent) {
        this(certConfirmContent, new DefaultDigestAlgorithmIdentifierFinder());
    }
    
    public CertificateConfirmationContent(final CertConfirmContent content, final DigestAlgorithmIdentifierFinder digestAlgFinder) {
        this.digestAlgFinder = digestAlgFinder;
        this.content = content;
    }
    
    public static CertificateConfirmationContent fromPKIBody(final PKIBody pkiBody) {
        return fromPKIBody(pkiBody, new DefaultDigestAlgorithmIdentifierFinder());
    }
    
    public static CertificateConfirmationContent fromPKIBody(final PKIBody pkiBody, final DigestAlgorithmIdentifierFinder digestAlgorithmIdentifierFinder) {
        if (!isCertificateConfirmationContent(pkiBody.getType())) {
            throw new IllegalArgumentException("content of PKIBody wrong type: " + pkiBody.getType());
        }
        return new CertificateConfirmationContent(CertConfirmContent.getInstance(pkiBody.getContent()), digestAlgorithmIdentifierFinder);
    }
    
    public static boolean isCertificateConfirmationContent(final int n) {
        switch (n) {
            case 24: {
                return true;
            }
            default: {
                return false;
            }
        }
    }
    
    public CertConfirmContent toASN1Structure() {
        return this.content;
    }
    
    public CertificateStatus[] getStatusMessages() {
        final CertStatus[] certStatusArray = this.content.toCertStatusArray();
        final CertificateStatus[] array = new CertificateStatus[certStatusArray.length];
        for (int i = 0; i != array.length; ++i) {
            array[i] = new CertificateStatus(this.digestAlgFinder, certStatusArray[i]);
        }
        return array;
    }
}
