package org.bouncycastle.asn1.crmf;
import org.bouncycastle.asn1.ASN1Choice;
import org.bouncycastle.asn1.ASN1Encodable;
import org.bouncycastle.asn1.ASN1TaggedObject;
import org.bouncycastle.asn1.DERBitString;
import org.bouncycastle.asn1.DERInteger;
import org.bouncycastle.asn1.DERObject;
import org.bouncycastle.asn1.DERTaggedObject;
import org.bouncycastle.asn1.cms.EnvelopedData;
public class POPOPrivKey
extends ASN1Encodable
implements ASN1Choice
{
public static final int thisMessage = 0;
public static final int subsequentMessage = 1;
public static final int dhMAC = 2;
public static final int agreeMAC = 3;
public static final int encryptedKey = 4;
private int tagNo;
private ASN1Encodable obj;
private POPOPrivKey(ASN1TaggedObject obj)
{
this.tagNo = obj.getTagNo();
switch (tagNo)
{
case thisMessage:
this.obj = DERBitString.getInstance(obj, false);
break;
case subsequentMessage:
this.obj = SubsequentMessage.valueOf(DERInteger.getInstance(obj, false).getValue().intValue());
break;
case dhMAC:
this.obj = DERBitString.getInstance(obj, false);
break;
case agreeMAC:
this.obj = PKMACValue.getInstance(obj, false);
break;
case encryptedKey:
this.obj = EnvelopedData.getInstance(obj, false);
break;
default:
throw new IllegalArgumentException("unknown tag in POPOPrivKey");
}
}
public static POPOPrivKey getInstance(ASN1TaggedObject tagged, boolean isExplicit)
{
return new POPOPrivKey(ASN1TaggedObject.getInstance(tagged.getObject()));
}
public POPOPrivKey(SubsequentMessage msg)
{
this.tagNo = subsequentMessage;
this.obj = msg;
}
public int getType()
{
return tagNo;
}
public ASN1Encodable getValue()
{
return obj;
}
POPOPrivKey ::= CHOICE {
thisMessage [0] BIT STRING, -- Deprecated
-- possession is proven in this message (which contains the private
-- key itself (encrypted for the CA))
subsequentMessage [1] SubsequentMessage,
-- possession will be proven in a subsequent message
dhMAC [2] BIT STRING, -- Deprecated
agreeMAC [3] PKMACValue,
encryptedKey [4] EnvelopedData }
/**
* <pre>
* POPOPrivKey ::= CHOICE {
* thisMessage [0] BIT STRING, -- Deprecated
* -- possession is proven in this message (which contains the private
* -- key itself (encrypted for the CA))
* subsequentMessage [1] SubsequentMessage,
* -- possession will be proven in a subsequent message
* dhMAC [2] BIT STRING, -- Deprecated
* agreeMAC [3] PKMACValue,
* encryptedKey [4] EnvelopedData }
* </pre>
*/
public DERObject toASN1Object()
{
return new DERTaggedObject(false, tagNo, obj);
}
}