com.lowagie.text.pdf

## Class TSAClientBouncyCastle

- java.lang.Object
- - com.lowagie.text.pdf.TSAClientBouncyCastle

- All Implemented Interfaces:
    TSAClient

      public class TSAClientBouncyCastle
      extends java.lang.Object
      implements TSAClient

  Time Stamp Authority Client interface implementation using Bouncy Castle org.bouncycastle.tsp package.

  Created by Aiken Sam, 2006-11-15, refactored by Martin Brunecky, 07/15/2007 for ease of subclassing.

  Since:
    2.1.6

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected int` | `tokSzEstimate` Estimate of the received time stamp token
    `protected java.lang.String` | `tsaPassword` TSA password
    `protected java.lang.String` | `tsaURL` URL of the Time Stamp Authority
    `protected java.lang.String` | `tsaUsername` TSA Username

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `TSAClientBouncyCastle(java.lang.String url)` Creates an instance of a TSAClient that will use BouncyCastle.
    `TSAClientBouncyCastle(java.lang.String url, java.lang.String username, java.lang.String password)` Creates an instance of a TSAClient that will use BouncyCastle.
    `TSAClientBouncyCastle(java.lang.String url, java.lang.String username, java.lang.String password, int tokSzEstimate)` Constructor.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected byte[]` | `getTimeStampToken(byte[] imprint)` Get timestamp token - Bouncy Castle request encoding / decoding layer
    `byte[]` | `getTimeStampToken(PdfPKCS7 caller, byte[] imprint)` Get RFC 3161 timeStampToken.
    `int` | `getTokenSizeEstimate()` Get the token size estimate.
    `protected byte[]` | `getTSAResponse(byte[] requestBytes)` Get timestamp token - communications layer

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

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

- - ### Field Detail

    - #### tsaURL

          protected java.lang.String tsaURL

      URL of the Time Stamp Authority

    - #### tsaUsername

          protected java.lang.String tsaUsername

      TSA Username

    - #### tsaPassword

          protected java.lang.String tsaPassword

      TSA password

    - #### tokSzEstimate

          protected int tokSzEstimate

      Estimate of the received time stamp token

  - ### Constructor Detail

    - #### TSAClientBouncyCastle

          public TSAClientBouncyCastle(java.lang.String url)

      Creates an instance of a TSAClient that will use BouncyCastle.
      Parameters:
        `url` - String - Time Stamp Authority URL (i.e. "http://tsatest1.digistamp.com/TSA")

    - #### TSAClientBouncyCastle

          public TSAClientBouncyCastle(java.lang.String url,
                               java.lang.String username,
                               java.lang.String password)

      Creates an instance of a TSAClient that will use BouncyCastle.
      Parameters:
        `url` - String - Time Stamp Authority URL (i.e. "http://tsatest1.digistamp.com/TSA")
        `username` - String - user(account) name
        `password` - String - password

    - #### TSAClientBouncyCastle

          public TSAClientBouncyCastle(java.lang.String url,
                               java.lang.String username,
                               java.lang.String password,
                               int tokSzEstimate)

      Constructor. Note the token size estimate is updated by each call, as the token size is not likely to change (as long as we call the same TSA using the same imprint length).
      Parameters:
        `url` - String - Time Stamp Authority URL (i.e. "http://tsatest1.digistamp.com/TSA")
        `username` - String - user(account) name
        `password` - String - password
        `tokSzEstimate` - int - estimated size of received time stamp token (DER encoded)

  - ### Method Detail

    - #### getTokenSizeEstimate

          public int getTokenSizeEstimate()

      Get the token size estimate. Returned value reflects the result of the last succesfull call, padded
      Specified by:
        `getTokenSizeEstimate` in interface `TSAClient`
      Returns:
        an estimate of the token size

    - #### getTimeStampToken

          public byte[] getTimeStampToken(PdfPKCS7 caller,
                                 byte[] imprint)
                                   throws java.lang.Exception

      Get RFC 3161 timeStampToken. Method may return null indicating that timestamp should be skipped.
      Specified by:
        `getTimeStampToken` in interface `TSAClient`
      Parameters:
        `caller` - PdfPKCS7 - calling PdfPKCS7 instance (in case caller needs it)
        `imprint` - byte[] - data imprint to be time-stamped
      Returns:
        byte[] - encoded, TSA signed data of the timeStampToken
      Throws:
        `java.lang.Exception` - - TSA request failed
      See Also:
        `TSAClient.getTimeStampToken(com.lowagie.text.pdf.PdfPKCS7, byte[])`

    - #### getTimeStampToken

          protected byte[] getTimeStampToken(byte[] imprint)
                                      throws java.lang.Exception

      Get timestamp token - Bouncy Castle request encoding / decoding layer
      Throws:
        `java.lang.Exception`

    - #### getTSAResponse

          protected byte[] getTSAResponse(byte[] requestBytes)
                                   throws java.lang.Exception

      Get timestamp token - communications layer
      Returns:
        - byte[] - TSA response, raw bytes (RFC 3161 encoded)
      Throws:
        `java.lang.Exception`