RSAPrivateCrtKey



javacard.security
Interface RSAPrivateCrtKey

All Superinterfaces:
Key, PrivateKey
All Known Implementing Classes:
RSAPrivateCrtKeyImpl

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, Cipher, 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, 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)
           throws CryptoException
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)
           throws CryptoException
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)
             throws CryptoException
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)
             throws CryptoException
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)
            throws CryptoException
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