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

package org.bouncycastle.cert.crmf;

import java.util.ArrayList;
import org.bouncycastle.cert.X509CertificateHolder;
import org.bouncycastle.asn1.cmp.PKIBody;
import org.bouncycastle.asn1.cmp.CertRepMessage;
import org.bouncycastle.asn1.cmp.CMPCertificate;
import org.bouncycastle.asn1.cmp.CertResponse;

public class CertificateRepMessage
{
    private final CertResponse[] resps;
    private final CMPCertificate[] caCerts;
    
    public CertificateRepMessage(final CertRepMessage certRepMessage) {
        this.resps = certRepMessage.getResponse();
        this.caCerts = certRepMessage.getCaPubs();
    }
    
    public static CertificateRepMessage fromPKIBody(final PKIBody pkiBody) {
        if (!isCertificateRepMessage(pkiBody.getType())) {
            throw new IllegalArgumentException("content of PKIBody wrong type: " + pkiBody.getType());
        }
        return new CertificateRepMessage(CertRepMessage.getInstance(pkiBody.getContent()));
    }
    
    public static boolean isCertificateRepMessage(final int n) {
        switch (n) {
            case 1:
            case 3:
            case 8:
            case 14: {
                return true;
            }
            default: {
                return false;
            }
        }
    }
    
    public CertificateResponse[] getResponses() {
        final CertificateResponse[] array = new CertificateResponse[this.resps.length];
        for (int i = 0; i != array.length; ++i) {
            array[i] = new CertificateResponse(this.resps[i]);
        }
        return array;
    }
    
    public X509CertificateHolder[] getX509Certificates() {
        final ArrayList list = new ArrayList();
        for (int i = 0; i != this.caCerts.length; ++i) {
            if (this.caCerts[i].isX509v3PKCert()) {
                list.add(new X509CertificateHolder(this.caCerts[i].getX509v3PKCert()));
            }
        }
        return (X509CertificateHolder[])list.toArray(new X509CertificateHolder[0]);
    }
    
    public boolean isOnlyX509PKCertificates() {
        boolean b = true;
        for (int i = 0; i != this.caCerts.length; ++i) {
            b &= this.caCerts[i].isX509v3PKCert();
        }
        return b;
    }
    
    public CMPCertificate[] getCMPCertificates() {
        final CMPCertificate[] array = new CMPCertificate[this.caCerts.length];
        System.arraycopy(this.caCerts, 0, array, 0, array.length);
        return array;
    }
    
    public CertRepMessage toASN1Structure() {
        return new CertRepMessage(this.caCerts, this.resps);
    }
}
