FileDocCategorySizeDatePackage
KeyAgreeRecipientInfo.javaAPI DocAndroid 1.5 API4693Wed May 06 22:41:06 BST 2009org.bouncycastle.asn1.cms

KeyAgreeRecipientInfo

public class KeyAgreeRecipientInfo extends org.bouncycastle.asn1.ASN1Encodable

Fields Summary
private org.bouncycastle.asn1.DERInteger
version
private OriginatorIdentifierOrKey
originator
private org.bouncycastle.asn1.ASN1OctetString
ukm
private org.bouncycastle.asn1.x509.AlgorithmIdentifier
keyEncryptionAlgorithm
private org.bouncycastle.asn1.ASN1Sequence
recipientEncryptedKeys
Constructors Summary
public KeyAgreeRecipientInfo(OriginatorIdentifierOrKey originator, org.bouncycastle.asn1.ASN1OctetString ukm, org.bouncycastle.asn1.x509.AlgorithmIdentifier keyEncryptionAlgorithm, org.bouncycastle.asn1.ASN1Sequence recipientEncryptedKeys)

        this.version = new DERInteger(3);
        this.originator = originator;
        this.ukm = ukm;
        this.keyEncryptionAlgorithm = keyEncryptionAlgorithm;
        this.recipientEncryptedKeys = recipientEncryptedKeys;
    
public KeyAgreeRecipientInfo(org.bouncycastle.asn1.ASN1Sequence seq)

        int index = 0;
        
        version = (DERInteger)seq.getObjectAt(index++);
        originator = OriginatorIdentifierOrKey.getInstance(
                            (ASN1TaggedObject)seq.getObjectAt(index++), true);

        if (seq.getObjectAt(index) instanceof ASN1TaggedObject)
        {
            ukm = ASN1OctetString.getInstance(
                            (ASN1TaggedObject)seq.getObjectAt(index++), true);
        }

        keyEncryptionAlgorithm = AlgorithmIdentifier.getInstance(
                                                seq.getObjectAt(index++));

        recipientEncryptedKeys = (ASN1Sequence)seq.getObjectAt(index++);
    
Methods Summary
public static org.bouncycastle.asn1.cms.KeyAgreeRecipientInfogetInstance(org.bouncycastle.asn1.ASN1TaggedObject obj, boolean explicit)
return a KeyAgreeRecipientInfo object from a tagged object.

param
obj the tagged object holding the object we want.
param
explicit true if the object is meant to be explicitly tagged false otherwise.
exception
IllegalArgumentException if the object held by the tagged object cannot be converted.

        return getInstance(ASN1Sequence.getInstance(obj, explicit));
    
public static org.bouncycastle.asn1.cms.KeyAgreeRecipientInfogetInstance(java.lang.Object obj)
return a KeyAgreeRecipientInfo object from the given object.

param
obj the object we want converted.
exception
IllegalArgumentException if the object cannot be converted.

        if (obj == null || obj instanceof KeyAgreeRecipientInfo)
        {
            return (KeyAgreeRecipientInfo)obj;
        }
        
        if (obj instanceof ASN1Sequence)
        {
            return new KeyAgreeRecipientInfo((ASN1Sequence)obj);
        }
        
        throw new IllegalArgumentException(
        "Illegal object in KeyAgreeRecipientInfo: " + obj.getClass().getName());

    
public org.bouncycastle.asn1.x509.AlgorithmIdentifiergetKeyEncryptionAlgorithm()

        return keyEncryptionAlgorithm;
    
public OriginatorIdentifierOrKeygetOriginator()

        return originator;
    
public org.bouncycastle.asn1.ASN1SequencegetRecipientEncryptedKeys()

        return recipientEncryptedKeys;
    
public org.bouncycastle.asn1.ASN1OctetStringgetUserKeyingMaterial()

        return ukm;
    
public org.bouncycastle.asn1.DERIntegergetVersion()

        return version;
    
public org.bouncycastle.asn1.DERObjecttoASN1Object()
Produce an object suitable for an ASN1OutputStream.
KeyAgreeRecipientInfo ::= SEQUENCE {
version CMSVersion, -- always set to 3
originator [0] EXPLICIT OriginatorIdentifierOrKey,
ukm [1] EXPLICIT UserKeyingMaterial OPTIONAL,
keyEncryptionAlgorithm KeyEncryptionAlgorithmIdentifier,
recipientEncryptedKeys RecipientEncryptedKeys
}

        ASN1EncodableVector  v = new ASN1EncodableVector();

        v.add(version);
        v.add(new DERTaggedObject(true, 0, originator));
        
        if (ukm != null)
        {
            v.add(new DERTaggedObject(true, 1, ukm));
        }
        
        v.add(keyEncryptionAlgorithm);
        v.add(recipientEncryptedKeys);

        return new DERSequence(v);