SignerInfo (Bouncy Castle Library 1.85 API Specification)
Date: 2026-07-12

org.bouncycastle.asn1.cms

## Class SignerInfo

- java.lang.Object
- - org.bouncycastle.asn1.ASN1Object
  - - org.bouncycastle.asn1.cms.SignerInfo

- All Implemented Interfaces:
    ASN1Encodable, Encodable

      public class SignerInfo
      extends ASN1Object

  RFC 5652: Signature container per Signer, see `SignerIdentifier`.

       PKCS#7:

       SignerInfo ::= SEQUENCE {
           version                   Version,
           sid                       SignerIdentifier,
           digestAlgorithm           DigestAlgorithmIdentifier,
           authenticatedAttributes   [0] IMPLICIT Attributes OPTIONAL,
           digestEncryptionAlgorithm DigestEncryptionAlgorithmIdentifier,
           encryptedDigest           EncryptedDigest,
           unauthenticatedAttributes [1] IMPLICIT Attributes OPTIONAL
       }

       EncryptedDigest ::= OCTET STRING

       DigestAlgorithmIdentifier ::= AlgorithmIdentifier

       DigestEncryptionAlgorithmIdentifier ::= AlgorithmIdentifier

       -----------------------------------------

       RFC 5652:

       SignerInfo ::= SEQUENCE {
           version            CMSVersion,
           sid                SignerIdentifier,
           digestAlgorithm    DigestAlgorithmIdentifier,
           signedAttrs        [0] IMPLICIT SignedAttributes OPTIONAL,
           signatureAlgorithm SignatureAlgorithmIdentifier,
           signature          SignatureValue,
           unsignedAttrs      [1] IMPLICIT UnsignedAttributes OPTIONAL
       }

       -- SignerIdentifier referenced certificates are at containing
       -- SignedData certificates element.

       SignerIdentifier ::= CHOICE {
           issuerAndSerialNumber IssuerAndSerialNumber,
           subjectKeyIdentifier  [0] SubjectKeyIdentifier }

       -- See Attributes for generalized SET OF Attribute

       SignedAttributes   ::= SET SIZE (1..MAX) OF Attribute
       UnsignedAttributes ::= SET SIZE (1..MAX) OF Attribute

       Attribute ::= SEQUENCE {
           attrType   OBJECT IDENTIFIER,
           attrValues SET OF AttributeValue }

       AttributeValue ::= ANY

       SignatureValue ::= OCTET STRING

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `SignerInfo(SignerIdentifier sid, AlgorithmIdentifier digAlgorithm, ASN1Set authenticatedAttributes, AlgorithmIdentifier digEncryptionAlgorithm, ASN1OctetString encryptedDigest, ASN1Set unauthenticatedAttributes)`
    `SignerInfo(SignerIdentifier sid, AlgorithmIdentifier digAlgorithm, Attributes authenticatedAttributes, AlgorithmIdentifier digEncryptionAlgorithm, ASN1OctetString encryptedDigest, Attributes unauthenticatedAttributes)`

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `ASN1Set` | `getAuthenticatedAttributes()`
    `AlgorithmIdentifier` | `getDigestAlgorithm()`
    `AlgorithmIdentifier` | `getDigestEncryptionAlgorithm()`
    `ASN1OctetString` | `getEncryptedDigest()`
    `static SignerInfo` | `getInstance(java.lang.Object o)` Return a SignerInfo object from the given input Accepted inputs: null → null `SignerInfo` object `ASN1Sequence` input formats with SignerInfo structure inside
    `SignerIdentifier` | `getSID()`
    `ASN1Set` | `getUnauthenticatedAttributes()`
    `ASN1Integer` | `getVersion()`
    `ASN1Primitive` | `toASN1Primitive()` Produce an object suitable for an ASN1OutputStream.

    - ### Methods inherited from class org.bouncycastle.asn1.ASN1Object

      `encodeTo, encodeTo, equals, getEncoded, getEncoded, hasEncodedTagValue, hashCode`

    - ### Methods inherited from class java.lang.Object

      `clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### SignerInfo

          public SignerInfo(SignerIdentifier sid,
                            AlgorithmIdentifier digAlgorithm,
                            ASN1Set authenticatedAttributes,
                            AlgorithmIdentifier digEncryptionAlgorithm,
                            ASN1OctetString encryptedDigest,
                            ASN1Set unauthenticatedAttributes)

      Parameters:
        `sid` -
        `digAlgorithm` - CMS knows as 'digestAlgorithm'
        `authenticatedAttributes` - CMS knows as 'signedAttrs'
        `digEncryptionAlgorithm` - CMS knows as 'signatureAlgorithm'
        `encryptedDigest` - CMS knows as 'signature'
        `unauthenticatedAttributes` - CMS knows as 'unsignedAttrs'

    - #### SignerInfo

          public SignerInfo(SignerIdentifier sid,
                            AlgorithmIdentifier digAlgorithm,
                            Attributes authenticatedAttributes,
                            AlgorithmIdentifier digEncryptionAlgorithm,
                            ASN1OctetString encryptedDigest,
                            Attributes unauthenticatedAttributes)

      Parameters:
        `sid` -
        `digAlgorithm` - CMS knows as 'digestAlgorithm'
        `authenticatedAttributes` - CMS knows as 'signedAttrs'
        `digEncryptionAlgorithm` - CMS knows as 'signatureAlgorithm'
        `encryptedDigest` - CMS knows as 'signature'
        `unauthenticatedAttributes` - CMS knows as 'unsignedAttrs'

  - ### Method Detail

    - #### getInstance

          public static SignerInfo getInstance(java.lang.Object o)
                                        throws java.lang.IllegalArgumentException

      Return a SignerInfo object from the given input

      Accepted inputs:

      - null → null
      - `SignerInfo` object
      - `ASN1Sequence` input formats with SignerInfo structure inside
      Parameters:
        `o` - the object we want converted.
      Throws:
        `java.lang.IllegalArgumentException` - if the object cannot be converted.

    - #### getVersion

          public ASN1Integer getVersion()

    - #### getSID

          public SignerIdentifier getSID()

    - #### getAuthenticatedAttributes

          public ASN1Set getAuthenticatedAttributes()

    - #### getDigestAlgorithm

          public AlgorithmIdentifier getDigestAlgorithm()

    - #### getEncryptedDigest

          public ASN1OctetString getEncryptedDigest()

    - #### getDigestEncryptionAlgorithm

          public AlgorithmIdentifier getDigestEncryptionAlgorithm()

    - #### getUnauthenticatedAttributes

          public ASN1Set getUnauthenticatedAttributes()

    - #### toASN1Primitive

          public ASN1Primitive toASN1Primitive()

      Produce an object suitable for an ASN1OutputStream.
      Specified by:
        `toASN1Primitive` in interface `ASN1Encodable`
      Specified by:
        `toASN1Primitive` in class `ASN1Object`
      Returns:
        a primitive representation of this object.