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

SignerInfo

public class SignerInfo extends ASN1Encodable

Fields Summary
private DERInteger
version
private SignerIdentifier
sid
private org.bouncycastle.asn1.x509.AlgorithmIdentifier
digAlgorithm
private ASN1Set
authenticatedAttributes
private org.bouncycastle.asn1.x509.AlgorithmIdentifier
digEncryptionAlgorithm
private ASN1OctetString
encryptedDigest
private ASN1Set
unauthenticatedAttributes
Constructors Summary
public SignerInfo(SignerIdentifier sid, org.bouncycastle.asn1.x509.AlgorithmIdentifier digAlgorithm, ASN1Set authenticatedAttributes, org.bouncycastle.asn1.x509.AlgorithmIdentifier digEncryptionAlgorithm, ASN1OctetString encryptedDigest, ASN1Set unauthenticatedAttributes)

        if (sid.isTagged())
        {
            this.version = new DERInteger(3);
        }
        else
        {
            this.version = new DERInteger(1);
        }

        this.sid = sid;
        this.digAlgorithm = digAlgorithm;
        this.authenticatedAttributes = authenticatedAttributes;
        this.digEncryptionAlgorithm = digEncryptionAlgorithm;
        this.encryptedDigest = encryptedDigest;
        this.unauthenticatedAttributes = unauthenticatedAttributes;
    
public SignerInfo(ASN1Sequence seq)

        Enumeration     e = seq.getObjects();

        version = (DERInteger)e.nextElement();
        sid = SignerIdentifier.getInstance(e.nextElement());
        digAlgorithm = AlgorithmIdentifier.getInstance(e.nextElement());

        Object obj = e.nextElement();

        if (obj instanceof ASN1TaggedObject)
        {
            authenticatedAttributes = ASN1Set.getInstance((ASN1TaggedObject)obj, false);

            digEncryptionAlgorithm = AlgorithmIdentifier.getInstance(e.nextElement());
        }
        else
        {
            authenticatedAttributes = null;
            digEncryptionAlgorithm = AlgorithmIdentifier.getInstance(obj);
        }

        encryptedDigest = DEROctetString.getInstance(e.nextElement());

        if (e.hasMoreElements())
        {
            unauthenticatedAttributes = ASN1Set.getInstance((ASN1TaggedObject)e.nextElement(), false);
        }
        else
        {
            unauthenticatedAttributes = null;
        }
    
Methods Summary
public ASN1SetgetAuthenticatedAttributes()

        return authenticatedAttributes;
    
public org.bouncycastle.asn1.x509.AlgorithmIdentifiergetDigestAlgorithm()

        return digAlgorithm;
    
public org.bouncycastle.asn1.x509.AlgorithmIdentifiergetDigestEncryptionAlgorithm()

        return digEncryptionAlgorithm;
    
public ASN1OctetStringgetEncryptedDigest()

        return encryptedDigest;
    
public static org.bouncycastle.asn1.cms.SignerInfogetInstance(java.lang.Object o)

        if (o == null || o instanceof SignerInfo)
        {
            return (SignerInfo)o;
        }
        else if (o instanceof ASN1Sequence)
        {
            return new SignerInfo((ASN1Sequence)o);
        }

        throw new IllegalArgumentException("unknown object in factory");
    
public SignerIdentifiergetSID()

        return sid;
    
public ASN1SetgetUnauthenticatedAttributes()

        return unauthenticatedAttributes;
    
public DERIntegergetVersion()

        return version;
    
public DERObjecttoASN1Object()
Produce an object suitable for an ASN1OutputStream.
SignerInfo ::= SEQUENCE {
version Version,
SignerIdentifier sid,
digestAlgorithm DigestAlgorithmIdentifier,
authenticatedAttributes [0] IMPLICIT Attributes OPTIONAL,
digestEncryptionAlgorithm DigestEncryptionAlgorithmIdentifier,
encryptedDigest EncryptedDigest,
unauthenticatedAttributes [1] IMPLICIT Attributes OPTIONAL
}

EncryptedDigest ::= OCTET STRING

DigestAlgorithmIdentifier ::= AlgorithmIdentifier

DigestEncryptionAlgorithmIdentifier ::= AlgorithmIdentifier

        ASN1EncodableVector v = new ASN1EncodableVector();

        v.add(version);
        v.add(sid);
        v.add(digAlgorithm);

        if (authenticatedAttributes != null)
        {
            v.add(new DERTaggedObject(false, 0, authenticatedAttributes));
        }

        v.add(digEncryptionAlgorithm);
        v.add(encryptedDigest);

        if (unauthenticatedAttributes != null)
        {
            v.add(new DERTaggedObject(false, 1, unauthenticatedAttributes));
        }

        return new DERSequence(v);