RSAPrivateCrtKey (Java Card API, Connected Edition)
Date: 2009-12-11

Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## javacard.security
Interface RSAPrivateCrtKey

All Superinterfaces:
  Key, PrivateKey

    @TransactionType(value=SUPPORTS)
    public interface RSAPrivateCrtKey

extends PrivateKey

The `RSAPrivateCrtKey` interface is used to sign data using the RSA algorithm in its Chinese Remainder Theorem form. It may also be used by the `javacardx.crypto.Cipher` class to encrypt/decrypt messages.

Let S = md mod n, where m is the data to be signed, d is the private key exponent, and n is private key modulus composed of two prime numbers p and q. The following names are used in the initializer methods in this interface:

- P, the prime factor p
- Q, the prime factor q
- PQ = q-1 mod p
- DP1 = d mod (p - 1)
- DQ1 = d mod (q - 1)

When all five components (P,Q,PQ,DP1,DQ1) of the key are set, the key is initialized and ready for use.

See Also:
  `RSAPrivateKey`, `RSAPublicKey`, `KeyBuilder`, `Signature`, `javacardx.crypto.Cipher`, `javacardx.crypto.KeyEncryption`

Method Summary
`short` | `getDP1(byte[] buffer, short offset)` Returns the value of the DP1 parameter in plain text.
`short` | `getDQ1(byte[] buffer, short offset)` Returns the value of the DQ1 parameter in plain text.
`short` | `getP(byte[] buffer, short offset)` Returns the value of the P parameter in plain text.
`short` | `getPQ(byte[] buffer, short offset)` Returns the value of the PQ parameter in plain text.
`short` | `getQ(byte[] buffer, short offset)` Returns the value of the Q parameter in plain text.
`void` | `setDP1(byte[] buffer, short offset, short length)` Sets the value of the DP1 parameter.
`void` | `setDQ1(byte[] buffer, short offset, short length)` Sets the value of the DQ1 parameter.
`void` | `setP(byte[] buffer, short offset, short length)` Sets the value of the P parameter.
`void` | `setPQ(byte[] buffer, short offset, short length)` Sets the value of the PQ parameter.
`void` | `setQ(byte[] buffer, short offset, short length)` Sets the value of the Q parameter.

Methods inherited from interface javacard.security.Key
`clearKey, getSize, getType, getTypeName, isInitialized`

Method Detail

### setP

    void setP(byte[] buffer,
              short offset,
              short length)
              throws CryptoException

  Sets the value of the P parameter. The plain text data format is big-endian and right-aligned (the least significant bit is the least significant bit of last byte). Input P parameter data is copied into the internal representation.

  Note:

  - If the key object implements the `javacardx.crypto.KeyEncryption` interface and the `Cipher` object specified via `setKeyCipher()` is not `null`, the P parameter value is decrypted using the `Cipher` object.

  Parameters:
    `buffer` - the input buffer
    `offset` - the offset into the input buffer at which the parameter value begins
    `length` - the length of the parameter
  Throws:
    `CryptoException` - with the following reason code:
    - `CryptoException.ILLEGAL_VALUE` if the input parameter data length is inconsistent with the implementation or if input data decryption is required and fails.

### setQ

    void setQ(byte[] buffer,
              short offset,
              short length)
              throws CryptoException

  Sets the value of the Q parameter. The plain text data format is big-endian and right-aligned (the least significant bit is the least significant bit of last byte). Input Q parameter data is copied into the internal representation.

  Note:

  - If the key object implements the `javacardx.crypto.KeyEncryption` interface and the `Cipher` object specified via `setKeyCipher()` is not `null`, the Q parameter value is decrypted using the `Cipher` object.

  Parameters:
    `buffer` - the input buffer
    `offset` - the offset into the input buffer at which the parameter value begins
    `length` - the length of the parameter
  Throws:
    `CryptoException` - with the following reason code:
    - `CryptoException.ILLEGAL_VALUE` if the input parameter data length is inconsistent with the implementation or if input data decryption is required and fails.

### setDP1

    void setDP1(byte[] buffer,
                short offset,
                short length)
                throws CryptoException

  Sets the value of the DP1 parameter. The plain text data format is big-endian and right-aligned (the least significant bit is the least significant bit of last byte). Input DP1 parameter data is copied into the internal representation.

  Note:

  - If the key object implements the `javacardx.crypto.KeyEncryption` interface and the `Cipher` object specified via `setKeyCipher()` is not `null`, the DP1 parameter value is decrypted using the `Cipher` object.

  Parameters:
    `buffer` - the input buffer
    `offset` - the offset into the input buffer at which the parameter value begins
    `length` - the length of the parameter
  Throws:
    `CryptoException` - with the following reason code:
    - `CryptoException.ILLEGAL_VALUE` if the input parameter data length is inconsistent with the implementation or if input data decryption is required and fails.

### setDQ1

    void setDQ1(byte[] buffer,
                short offset,
                short length)
                throws CryptoException

  Sets the value of the DQ1 parameter. The plain text data format is big-endian and right-aligned (the least significant bit is the least significant bit of last byte). Input DQ1 parameter data is copied into the internal representation.

  Note:

  - If the key object implements the `javacardx.crypto.KeyEncryption` interface and the `Cipher` object specified via `setKeyCipher()` is not `null`, the DQ1 parameter value is decrypted using the `Cipher` object.

  Parameters:
    `buffer` - the input buffer
    `offset` - the offset into the input buffer at which the parameter value begins
    `length` - the length of the parameter
  Throws:
    `CryptoException` - with the following reason code:
    - `CryptoException.ILLEGAL_VALUE` if the input parameter data length is inconsistent with the implementation or if input data decryption is required and fails.

### setPQ

    void setPQ(byte[] buffer,
               short offset,
               short length)
               throws CryptoException

  Sets the value of the PQ parameter. The plain text data format is big-endian and right-aligned (the least significant bit is the least significant bit of last byte). Input PQ parameter data is copied into the internal representation.

  Note:

  - If the key object implements the `javacardx.crypto.KeyEncryption` interface and the `Cipher` object specified via `setKeyCipher()` is not `null`, the PQ parameter value is decrypted using the `Cipher` object.

  Parameters:
    `buffer` - the input buffer
    `offset` - the offset into the input buffer at which the parameter value begins
    `length` - the length of the parameter
  Throws:
    `CryptoException` - with the following reason code:
    - `CryptoException.ILLEGAL_VALUE` if the input parameter data length is inconsistent with the implementation or if input data decryption is required and fails.

### getP

    short getP(byte[] buffer,
               short offset)

  Returns the value of the P parameter in plain text. The data format is big-endian and right-aligned (the least significant bit is the least significant bit of last byte).

  Parameters:
    `buffer` - the output buffer
    `offset` - the offset into the output buffer at which the parameter value begins
  Returns:
    the byte length of the P parameter value returned
  Throws:
    `CryptoException` - with the following reason code:
    - `CryptoException.UNINITIALIZED_KEY` if the value of P parameter has not been successfully initialized since the time the initialized state of the key was set to false.
  See Also:
    `Key`

### getQ

    short getQ(byte[] buffer,
               short offset)

  Returns the value of the Q parameter in plain text. The data format is big-endian and right-aligned (the least significant bit is the least significant bit of last byte).

  Parameters:
    `buffer` - the output buffer
    `offset` - the offset into the output buffer at which the parameter value begins
  Returns:
    the byte length of the Q parameter value returned
  Throws:
    `CryptoException` - with the following reason code:
    - `CryptoException.UNINITIALIZED_KEY` if the value of Q parameter has not been successfully initialized since the time the initialized state of the key was set to false.
  See Also:
    `Key`

### getDP1

    short getDP1(byte[] buffer,
                 short offset)

  Returns the value of the DP1 parameter in plain text. The data format is big-endian and right-aligned (the least significant bit is the least significant bit of last byte).

  Parameters:
    `buffer` - the output buffer
    `offset` - the offset into the output buffer at which the parameter value begins
  Returns:
    the byte length of the DP1 parameter value returned
  Throws:
    `CryptoException` - with the following reason code:
    - `CryptoException.UNINITIALIZED_KEY` if the value of DP1 parameter has not been successfully initialized since the time the initialized state of the key was set to false.
  See Also:
    `Key`

### getDQ1

    short getDQ1(byte[] buffer,
                 short offset)

  Returns the value of the DQ1 parameter in plain text. The data format is big-endian and right-aligned (the least significant bit is the least significant bit of last byte).

  Parameters:
    `buffer` - the output buffer
    `offset` - the offset into the output buffer at which the parameter value begins
  Returns:
    the byte length of the DQ1 parameter value returned
  Throws:
    `CryptoException` - with the following reason code:
    - `CryptoException.UNINITIALIZED_KEY` if the value of DQ1 parameter has not been successfully initialized since the time the initialized state of the key was set to false.
  See Also:
    `Key`

### getPQ

    short getPQ(byte[] buffer,
                short offset)

  Returns the value of the PQ parameter in plain text. The data format is big-endian and right-aligned (the least significant bit is the least significant bit of last byte).

  Parameters:
    `buffer` - the output buffer
    `offset` - the offset into the output buffer at which the parameter value begins
  Returns:
    the byte length of the PQ parameter value returned
  Throws:
    `CryptoException` - with the following reason code:
    - `CryptoException.UNINITIALIZED_KEY` if the value of PQ parameter has not been successfully initialized since the time the initialized state of the key was set to false.
  See Also:
    `Key`

Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright (c) 2009 Sun Microsystems, Inc. All rights reserved.