Interface RSAPrivateCrtKey

  • All Superinterfaces:
    Key, PrivateKey

    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

      All Methods Instance Methods Abstract Methods 
      Modifier and Type Method Description
      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.
    • 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