com.verisign.epp.codec.verificationcode

## Class EPPSignedCode

- java.lang.Object
- - com.verisign.epp.codec.verificationcode.EPPSignedCode

- All Implemented Interfaces:
    EPPCodecComponent, java.io.Serializable, java.lang.Cloneable
  Direct Known Subclasses:
    EPPEncodedSignedCodeValue

      public class EPPSignedCode
      extends java.lang.Object
      implements EPPCodecComponent

  Class for the signed code, which contains the verification code and the `XMLSignature`.
  See Also:
    Serialized Form

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static java.lang.String` | `ELM_SIGNED_CODE` Constant for the code tag for signedCode element
    `static java.lang.String` | `ELM_SIGNED_CODE_LOCALNAME` Constant for the code local name for signedCode element

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `EPPSignedCode()` Create an `EPPSignedCode` instance.
    `EPPSignedCode(byte[] aSignedCodeArray)` Create the `EPPSignedCode` object from the input `byte[]` (XML).
    `EPPSignedCode(EPPEncodedSignedCodeValue aEncodedSignedCode)` Convert an `EPPEncodedSignedCode` into an `EPPSignedCode`.
    `EPPSignedCode(EPPVerificationCode aCode)` Create an `EPPSignedCode` with the code of the signed code.
    `EPPSignedCode(java.lang.String aCode, java.lang.String aType)` Create an `EPPSignedCode` with the type and code of the signed code.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `java.lang.Object` | `clone()` Clone `EPPSignedCode`.
    `void` | `decode(byte[] aSignedCodeArray)` Create a DOM document from byte array.
    `void` | `decode(org.w3c.dom.Element aElement)` Decode the `EPPSignedCode` component
    `byte[]` | `encode()` Encode the signed code to a `byte[]`.
    `org.w3c.dom.Element` | `encode(org.w3c.dom.Document aDocument)` Sets all this instance's data in the given XML document
    `boolean` | `equals(java.lang.Object aObject)` implements a deep `EPPSignedCode` compare.
    `java.lang.String` | `getAttrIdValue()` Gets the "id" attribute value.
    `EPPVerificationCode` | `getCode()` Gets the code value associated with the signed code.
    `java.lang.String` | `getCodeType()` Gets the code type of the contained code.
    `java.lang.String` | `getCodeValue()` Gets the code value of the contained code.
    `java.lang.String` | `getLocalName()` Gets the XML local name for the signed code.
    `java.lang.String` | `getNamespace()` Returns the XML namespace associated with the `EPPCodecComponent`.
    `java.security.cert.TrustAnchor` | `getTrustAnchor()` Gets the Trust Anchor associated with the validated signed code.
    `boolean` | `hasTrustAnchor()` Has the Trust Anchor been set?
    `void` | `sign(java.security.PrivateKey aPrivateKey)` Digitally sign the signed code using the passed private key.
    `void` | `sign(java.security.PrivateKey aPrivateKey, java.security.cert.Certificate[] aCertChain)` Digitally sign the signed code using the passed private key and a chain of certificates.
    `java.lang.String` | `toString()` Implementation of `Object.toString`, which will result in an indented XML `String` representation of the concrete `EPPCodecComponent`.
    `boolean` | `validate(java.security.cert.PKIXParameters aPKIXParameters)` Validate the signature attribute against the signed code attributes by using the public key of the certificate or the top certificate in the certificate chain contained in the `XMLSignature` with using the passed PKIX parameters to the PKIX `CertPathValidator` algorithm.
    `boolean` | `validate(java.security.cert.PKIXParameters aPKIXParameters, boolean aSynchronizePKIXParameters)` Validate the signature attribute against the signed code attributes by using the public key of the certificate or the top certificate in the certificate chain contained in the `XMLSignature` with using the passed PKIX parameters to the PKIX `CertPathValidator` algorithm.
    `boolean` | `validate(java.security.PublicKey aPublicKey)` Validate the signature attribute against the signed code attributes.

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

      `finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Field Detail

    - #### ELM_SIGNED_CODE_LOCALNAME

          public static final java.lang.String ELM_SIGNED_CODE_LOCALNAME

      Constant for the code local name for signedCode element
      See Also:
        Constant Field Values

    - #### ELM_SIGNED_CODE

          public static final java.lang.String ELM_SIGNED_CODE

      Constant for the code tag for signedCode element
      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### EPPSignedCode

          public EPPSignedCode()

      Create an `EPPSignedCode` instance.

    - #### EPPSignedCode

          public EPPSignedCode(EPPEncodedSignedCodeValue aEncodedSignedCode)

      Convert an `EPPEncodedSignedCode` into an `EPPSignedCode`.
      Parameters:
        `aEncodedSignedCode` - `EPPEncodedSignedCode` to convert from.

    - #### EPPSignedCode

          public EPPSignedCode(EPPVerificationCode aCode)
                        throws EPPEncodeException

      Create an `EPPSignedCode` with the code of the signed code. The default encoding is XML and the signature must be generated by calling `sign(PrivateKey)`. Once the object is created using this constructor, one should not update the object. In the case the object gets updated, changes will not be included in XML/signature.
      Parameters:
        `aCode` - Verification code
      Throws:
        `EPPEncodeException` - Thrown if any errors prevent encoding.

    - #### EPPSignedCode

          public EPPSignedCode(java.lang.String aCode,
                               java.lang.String aType)
                        throws EPPEncodeException

      Create an `EPPSignedCode` with the type and code of the signed code. The default encoding is XML and the signature must be generated by calling `sign(PrivateKey)`. Once the object is created using this constructor, one should not update the object. In the case the object gets updated, changes will not be included in XML/signature.
      Parameters:
        `aCode` - Verification code
        `aType` - Type of the verification code
      Throws:
        `EPPEncodeException` - Thrown if any errors prevent encoding.

    - #### EPPSignedCode

          public EPPSignedCode(byte[] aSignedCodeArray)
                        throws EPPDecodeException

      Create the `EPPSignedCode` object from the input `byte[]` (XML).
      Parameters:
        `aSignedCodeArray` - `byte[]` to decode the attribute values
      Throws:
        `EPPDecodeException` - Error decoding the `byte[]`.

  - ### Method Detail

    - #### decode

          public void decode(org.w3c.dom.Element aElement)
                      throws EPPDecodeException

      Decode the `EPPSignedCode` component
      Specified by:
        `decode` in interface `EPPCodecComponent`
      Parameters:
        `aElement` - Root element of the `EPPSignedCode`
      Throws:
        `EPPDecodeException` - Error decoding the `EPPSignedCode`

    - #### decode

          public void decode(byte[] aSignedCodeArray)
                      throws EPPDecodeException

      Create a DOM document from byte array. Initialized the instance variables like code, issuer etc. Sets the signedCodeElement.
      Parameters:
        `aSignedCodeArray` - `byte[]` to decode the attribute values
      Throws:
        `EPPDecodeException` - Error decoding the `byte[]`.

    - #### encode

          public byte[] encode()
                        throws EPPEncodeException

      Encode the signed code to a `byte[]`.
      Returns:
        `byte[]` representing signed code
      Throws:
        `EPPEncodeException` - Error encoding the signed code

    - #### encode

          public org.w3c.dom.Element encode(org.w3c.dom.Document aDocument)
                                     throws EPPEncodeException

      Sets all this instance's data in the given XML document
      Specified by:
        `encode` in interface `EPPCodecComponent`
      Parameters:
        `aDocument` - a DOM Document to attach data to.
      Returns:
        The root element of this component.
      Throws:
        `EPPEncodeException` - Thrown if any errors prevent encoding.

    - #### clone

          public java.lang.Object clone()
                                 throws java.lang.CloneNotSupportedException

      Clone `EPPSignedCode`. Signature element is not cloned.
      Specified by:
        `clone` in interface `EPPCodecComponent`
      Overrides:
        `clone` in class `java.lang.Object`
      Returns:
        clone of `EPPSignedCode`
      Throws:
        `java.lang.CloneNotSupportedException` - standard Object.clone exception

    - #### sign

          public void sign(java.security.PrivateKey aPrivateKey)
                    throws EPPException

      Digitally sign the signed code using the passed private key. No certificates will be added using this method. If certificates need to be added use `sign(PrivateKey, Certificate[])`.
      Parameters:
        `aPrivateKey` - Private key used to sign the signed code
      Throws:
        `EPPException` - Error creating the digital signature

    - #### sign

          public void sign(java.security.PrivateKey aPrivateKey,
                           java.security.cert.Certificate[] aCertChain)
                    throws EPPException

      Digitally sign the signed code using the passed private key and a chain of certificates.
      Parameters:
        `aPrivateKey` - Private key used to sign the signed code
        `aCertChain` - Certificate chain to include in the XMLSignature associated with the private key. Pass `null` to not include the certificate chain in the XMLSignature.
      Throws:
        `EPPException` - Error creating the digital signature

    - #### validate

          public boolean validate(java.security.cert.PKIXParameters aPKIXParameters)

      Validate the signature attribute against the signed code attributes by using the public key of the certificate or the top certificate in the certificate chain contained in the `XMLSignature` with using the passed PKIX parameters to the PKIX `CertPathValidator` algorithm. The trust store can be loaded and used to create an instance of `PKIXParameters` to verify the certificate chain included in the `XMLSignature` with the trust anchors included in the trust store. This method will automatically synchronize the `aPKIXParameters` parameter when used, since it is not thread-safe. Use `validate(PKIXParameters, boolean)` to explicitly set the `aPKIXParameters` synchronization setting.
      Parameters:
        `aPKIXParameters` - Parameters used as input for the PKIX `CertPathValidator` algorithm.
      Returns:
        `true` if valid; `false` otherwise.

    - #### validate

          public boolean validate(java.security.cert.PKIXParameters aPKIXParameters,
                                  boolean aSynchronizePKIXParameters)

      Validate the signature attribute against the signed code attributes by using the public key of the certificate or the top certificate in the certificate chain contained in the `XMLSignature` with using the passed PKIX parameters to the PKIX `CertPathValidator` algorithm. The trust store can be loaded and used to create an instance of `PKIXParameters` to verify the certificate chain included in the `XMLSignature` with the trust anchors included in the trust store.
      Parameters:
        `aPKIXParameters` - Parameters used as input for the PKIX `CertPathValidator` algorithm.
        `aSynchronizePKIXParameters` - Should the `aPKIXParameters` be synchronized inside the method? If there is no reason to synchronize, then `false` can be passed to increase performance.
      Returns:
        `true` if valid; `false` otherwise.

    - #### validate

          public boolean validate(java.security.PublicKey aPublicKey)

      Validate the signature attribute against the signed code attributes.
      Parameters:
        `aPublicKey` - Public used to validate the signature
      Returns:
        `true` if valid; `false` otherwise.

    - #### equals

          public boolean equals(java.lang.Object aObject)

      implements a deep `EPPSignedCode` compare.
      Overrides:
        `equals` in class `java.lang.Object`
      Parameters:
        `aObject` - `EPPSignedCode` instance to compare with
      Returns:
        true if equal false otherwise

    - #### getLocalName

          public java.lang.String getLocalName()

      Gets the XML local name for the signed code.
      Returns:
        Either `ELM_SIGNED_MARK_LOCALNAME` or `ELM_ENCODED_SIGNED_MARK_LOCALNAME`

    - #### getCode

          public EPPVerificationCode getCode()

      Gets the code value associated with the signed code.
      Returns:
        The code associated with the signed code if defined: `null` otherwise.

    - #### getCodeValue

          public java.lang.String getCodeValue()

      Gets the code value of the contained code.
      Returns:
        Verification code value

    - #### getCodeType

          public java.lang.String getCodeType()

      Gets the code type of the contained code.
      Returns:
        Verification code type

    - #### getAttrIdValue

          public java.lang.String getAttrIdValue()

      Gets the "id" attribute value.
      Returns:
        Value of the "id" attribute value.

    - #### hasTrustAnchor

          public boolean hasTrustAnchor()

      Has the Trust Anchor been set?
      Returns:
        `true` if the Trust Anchor has been set; `false` otherwise.

    - #### getTrustAnchor

          public java.security.cert.TrustAnchor getTrustAnchor()

      Gets the Trust Anchor associated with the validated signed code.
      Returns:
        Trust Anchor if defined; `null` otherwise.

    - #### toString

          public java.lang.String toString()

      Implementation of `Object.toString`, which will result in an indented XML `String` representation of the concrete `EPPCodecComponent`.
      Overrides:
        `toString` in class `java.lang.Object`
      Returns:
        Indented XML `String` if successful; `ERROR` otherwise.

    - #### getNamespace

          public java.lang.String getNamespace()

      Returns the XML namespace associated with the `EPPCodecComponent`.
      Specified by:
        `getNamespace` in interface `EPPCodecComponent`
      Returns:
        XML namespace for the `EPPCodecComponent`.