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

SignerInfo

public class SignerInfo extends ASN1Encodable
a PKCS#7 signer info object.

Fields Summary
private DERInteger
version
private IssuerAndSerialNumber
issuerAndSerialNumber
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(DERInteger version, IssuerAndSerialNumber issuerAndSerialNumber, org.bouncycastle.asn1.x509.AlgorithmIdentifier digAlgorithm, ASN1Set authenticatedAttributes, org.bouncycastle.asn1.x509.AlgorithmIdentifier digEncryptionAlgorithm, ASN1OctetString encryptedDigest, ASN1Set unauthenticatedAttributes)

        this.version = version;
        this.issuerAndSerialNumber = issuerAndSerialNumber;
        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();
        issuerAndSerialNumber = IssuerAndSerialNumber.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.pkcs.SignerInfogetInstance(java.lang.Object o)

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

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

        return issuerAndSerialNumber;
    
public ASN1SetgetUnauthenticatedAttributes()

        return unauthenticatedAttributes;
    
public DERIntegergetVersion()

        return version;
    
public DERObjecttoASN1Object()
Produce an object suitable for an ASN1OutputStream.
SignerInfo ::= SEQUENCE {
version Version,
issuerAndSerialNumber IssuerAndSerialNumber,
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(issuerAndSerialNumber);
        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);