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

org.bouncycastle.asn1.crmf

## Class POPOSigningKey

- java.lang.Object
- - org.bouncycastle.asn1.ASN1Object
  - - org.bouncycastle.asn1.crmf.POPOSigningKey

- All Implemented Interfaces:
    ASN1Encodable, Encodable

      public class POPOSigningKey
      extends ASN1Object

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `POPOSigningKey(POPOSigningKeyInput poposkIn, AlgorithmIdentifier aid, ASN1BitString signature)` Creates a new Proof of Possession object for a signing key.

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `AlgorithmIdentifier` | `getAlgorithmIdentifier()`
    `static POPOSigningKey` | `getInstance(ASN1TaggedObject obj, boolean explicit)`
    `static POPOSigningKey` | `getInstance(java.lang.Object o)`
    `POPOSigningKeyInput` | `getPoposkInput()`
    `ASN1BitString` | `getSignature()`
    `ASN1Primitive` | `toASN1Primitive()` POPOSigningKey ::= SEQUENCE { poposkInput [0] POPOSigningKeyInput OPTIONAL, algorithmIdentifier AlgorithmIdentifier, signature BIT STRING } -- The signature (using "algorithmIdentifier") is on the -- DER-encoded value of poposkInput.

    - ### 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

    - #### POPOSigningKey

          public POPOSigningKey(POPOSigningKeyInput poposkIn,
                                AlgorithmIdentifier aid,
                                ASN1BitString signature)

      Creates a new Proof of Possession object for a signing key.
      Parameters:
        `poposkIn` - the POPOSigningKeyInput structure, or null if the CertTemplate includes both subject and publicKey values.
        `aid` - the AlgorithmIdentifier used to sign the proof of possession.
        `signature` - a signature over the DER-encoded value of poposkIn, or the DER-encoded value of certReq if poposkIn is null.

  - ### Method Detail

    - #### getInstance

          public static POPOSigningKey getInstance(java.lang.Object o)

    - #### getInstance

          public static POPOSigningKey getInstance(ASN1TaggedObject obj,
                                                   boolean explicit)

    - #### getPoposkInput

          public POPOSigningKeyInput getPoposkInput()

    - #### getAlgorithmIdentifier

          public AlgorithmIdentifier getAlgorithmIdentifier()

    - #### getSignature

          public ASN1BitString getSignature()

    - #### toASN1Primitive

          public ASN1Primitive toASN1Primitive()

           POPOSigningKey ::= SEQUENCE {
                                poposkInput           [0] POPOSigningKeyInput OPTIONAL,
                                algorithmIdentifier   AlgorithmIdentifier,
                                signature             BIT STRING }
            -- The signature (using "algorithmIdentifier") is on the
            -- DER-encoded value of poposkInput.  NOTE: If the CertReqMsg
            -- certReq CertTemplate contains the subject and publicKey values,
            -- then poposkInput MUST be omitted and the signature MUST be
            -- computed on the DER-encoded value of CertReqMsg certReq.  If
            -- the CertReqMsg certReq CertTemplate does not contain the public
            -- key and subject values, then poposkInput MUST be present and
            -- MUST be signed.  This strategy ensures that the public key is
            -- not present in both the poposkInput and CertReqMsg certReq
            -- CertTemplate fields.

      Specified by:
        `toASN1Primitive` in interface `ASN1Encodable`
      Specified by:
        `toASN1Primitive` in class `ASN1Object`
      Returns:
        a basic ASN.1 object representation.