package com.google.bitcoin.bouncycastle.asn1.cryptopro;
import com.google.bitcoin.bouncycastle.asn1.ASN1Encodable;
import com.google.bitcoin.bouncycastle.asn1.ASN1EncodableVector;
import com.google.bitcoin.bouncycastle.asn1.ASN1Sequence;
import com.google.bitcoin.bouncycastle.asn1.ASN1TaggedObject;
import com.google.bitcoin.bouncycastle.asn1.DERObject;
import com.google.bitcoin.bouncycastle.asn1.DERObjectIdentifier;
import com.google.bitcoin.bouncycastle.asn1.DERSequence;
public class GOST3410PublicKeyAlgParameters
extends ASN1Encodable
{
private DERObjectIdentifier publicKeyParamSet;
private DERObjectIdentifier digestParamSet;
private DERObjectIdentifier encryptionParamSet;
public static GOST3410PublicKeyAlgParameters getInstance(
ASN1TaggedObject obj,
boolean explicit)
{
return getInstance(ASN1Sequence.getInstance(obj, explicit));
}
public static GOST3410PublicKeyAlgParameters getInstance(
Object obj)
{
if(obj == null || obj instanceof GOST3410PublicKeyAlgParameters)
{
return (GOST3410PublicKeyAlgParameters)obj;
}
if(obj instanceof ASN1Sequence)
{
return new GOST3410PublicKeyAlgParameters((ASN1Sequence)obj);
}
throw new IllegalArgumentException("Invalid GOST3410Parameter: " + obj.getClass().getName());
}
public GOST3410PublicKeyAlgParameters(
DERObjectIdentifier publicKeyParamSet,
DERObjectIdentifier digestParamSet)
{
this.publicKeyParamSet = publicKeyParamSet;
this.digestParamSet = digestParamSet;
this.encryptionParamSet = null;
}
public GOST3410PublicKeyAlgParameters(
DERObjectIdentifier publicKeyParamSet,
DERObjectIdentifier digestParamSet,
DERObjectIdentifier encryptionParamSet)
{
this.publicKeyParamSet = publicKeyParamSet;
this.digestParamSet = digestParamSet;
this.encryptionParamSet = encryptionParamSet;
}
public GOST3410PublicKeyAlgParameters(
ASN1Sequence seq)
{
this.publicKeyParamSet = (DERObjectIdentifier)seq.getObjectAt(0);
this.digestParamSet = (DERObjectIdentifier)seq.getObjectAt(1);
if (seq.size() > 2)
{
this.encryptionParamSet = (DERObjectIdentifier)seq.getObjectAt(2);
}
}
public DERObjectIdentifier getPublicKeyParamSet()
{
return publicKeyParamSet;
}
public DERObjectIdentifier getDigestParamSet()
{
return digestParamSet;
}
public DERObjectIdentifier getEncryptionParamSet()
{
return encryptionParamSet;
}
public DERObject toASN1Object()
{
ASN1EncodableVector v = new ASN1EncodableVector();
v.add(publicKeyParamSet);
v.add(digestParamSet);
if (encryptionParamSet != null)
{
v.add(encryptionParamSet);
}
return new DERSequence(v);
}
}