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

package org.bouncycastle.its.jcajce;

import org.bouncycastle.its.ITSPublicEncryptionKey;
import org.bouncycastle.its.ITSPublicVerificationKey;
import java.security.PublicKey;
import org.bouncycastle.its.ITSCertificate;
import java.security.interfaces.ECPublicKey;
import org.bouncycastle.oer.its.ieee1609dot2.CertificateId;
import org.bouncycastle.jcajce.util.NamedJcaJceHelper;
import org.bouncycastle.jcajce.util.ProviderJcaJceHelper;
import java.security.Provider;
import org.bouncycastle.jcajce.util.DefaultJcaJceHelper;
import org.bouncycastle.oer.its.ieee1609dot2.ToBeSignedCertificate;
import org.bouncycastle.its.operator.ITSContentSigner;
import org.bouncycastle.jcajce.util.JcaJceHelper;
import org.bouncycastle.its.ITSExplicitCertificateBuilder;

public class JcaITSExplicitCertificateBuilder extends ITSExplicitCertificateBuilder
{
    private JcaJceHelper helper;
    
    public JcaITSExplicitCertificateBuilder(final ITSContentSigner itsContentSigner, final ToBeSignedCertificate.Builder builder) {
        this(itsContentSigner, builder, new DefaultJcaJceHelper());
    }
    
    private JcaITSExplicitCertificateBuilder(final ITSContentSigner itsContentSigner, final ToBeSignedCertificate.Builder builder, final JcaJceHelper helper) {
        super(itsContentSigner, builder);
        this.helper = helper;
    }
    
    public JcaITSExplicitCertificateBuilder setProvider(final Provider provider) {
        this.helper = new ProviderJcaJceHelper(provider);
        return this;
    }
    
    public JcaITSExplicitCertificateBuilder setProvider(final String s) {
        this.helper = new NamedJcaJceHelper(s);
        return this;
    }
    
    public ITSCertificate build(final CertificateId certificateId, final ECPublicKey ecPublicKey) {
        return this.build(certificateId, ecPublicKey, null);
    }
    
    public ITSCertificate build(final CertificateId certificateId, final ECPublicKey ecPublicKey, final ECPublicKey ecPublicKey2) {
        ITSPublicEncryptionKey itsPublicEncryptionKey = null;
        if (ecPublicKey2 != null) {
            itsPublicEncryptionKey = new JceITSPublicEncryptionKey(ecPublicKey2, this.helper);
        }
        return super.build(certificateId, new JcaITSPublicVerificationKey(ecPublicKey, this.helper), itsPublicEncryptionKey);
    }
}
