KeyPairImpl



com.licel.jcardsim.crypto
Class KeyPairImpl

java.lang.Object
  extended by com.licel.jcardsim.crypto.KeyPairImpl

public final class KeyPairImpl
extends Object

Implementation KeyPair based on BouncyCastle CryptoAPI

See Also:
KeyPair, RSAKeyPairGenerator, DSAKeyPairGenerator, ECKeyPairGenerator

Constructor Summary
KeyPairImpl(byte algorithm, short keyLength)
          Constructs a KeyPair instance for the specified algorithm and keylength; the encapsulated keys are uninitialized.
KeyPairImpl(PublicKey publicKey, PrivateKey privateKey)
          Constructs a new KeyPair object containing the specified public key and private key.
 
Method Summary
 void genKeyPair()
          (Re)Initializes the key objects encapsulated in this KeyPair instance with new key values.
 PrivateKey getPrivate()
          Returns a reference to the private key component of this KeyPair object.
 PublicKey getPublic()
          Returns a reference to the public key component of this KeyPair object.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

KeyPairImpl

public KeyPairImpl(byte algorithm,
                   short keyLength)
            throws CryptoException
Constructs a KeyPair instance for the specified algorithm and keylength; the encapsulated keys are uninitialized. To initialize the KeyPair instance use the genKeyPair() method.

The encapsulated key objects are of the specified keyLength size and implement the appropriate Key interface associated with the specified algorithm (example - RSAPublicKey interface for the public key and RSAPrivateKey interface for the private key within an ALG_RSA key pair).

Notes:

  • The key objects encapsulated in the generated KeyPair object need not support the KeyEncryption interface.

Parameters:
algorithm - the type of algorithm whose key pair needs to be generated. Valid codes listed in ALG_.. constants above. KeyPair
keyLength - the key size in bits. The valid key bit lengths are key type dependent. See the KeyBuilder class.
Throws:
CryptoException - with the following reason codes:
  • CryptoException.NO_SUCH_ALGORITHM if the requested algorithm associated with the specified type, size of key is not supported.
See Also:
KeyBuilder, KeyBuilder, Signature, KeyEncryption, Cipher

KeyPairImpl

public KeyPairImpl(PublicKey publicKey,
                   PrivateKey privateKey)
            throws CryptoException
Constructs a new KeyPair object containing the specified public key and private key.

Note that this constructor only stores references to the public and private key components in the generated KeyPair object. It does not throw an exception if the key parameter objects are uninitialized.

Parameters:
publicKey - the public key.
privateKey - the private key.
Throws:
CryptoException - with the following reason codes:
  • CryptoException.ILLEGAL_VALUE if the input parameter key objects are inconsistent with each other - i.e mismatched algorithm, size etc.
  • CryptoException.NO_SUCH_ALGORITHM if the algorithm associated with the specified type, size of key is not supported.
Method Detail

genKeyPair

public final void genKeyPair()
                      throws CryptoException
(Re)Initializes the key objects encapsulated in this KeyPair instance with new key values. The initialized public and private key objects encapsulated in this instance will then be suitable for use with the Signature, Cipher and KeyAgreement objects. An internal secure random number generator is used during new key pair generation.

Notes:

  • For the RSA algorithm, if the exponent value in the public key object is pre-initialized, it will be retained. Otherwise, a default value of 65537 will be used.
  • For the DSA algorithm, if the p, q and g parameters of the public key object are pre-initialized, they will be retained. Otherwise, default precomputed parameter sets will be used. The required default precomputed values are listed in Appendix B of Java Cryptography Architecture API Specification & Reference document.
  • For the EC case, if the Field, A, B, G and R parameters of the key pair are pre-initialized, then they will be retained. Otherwise default pre-specified values MAY be used (e.g. WAP predefined curves), since computation of random generic EC keys is infeasible on the smart card platform.
  • If the time taken to generate the key values is excessive, the implementation may automatically request additional APDU processing time from the CAD.

Throws:
CryptoException - with the following reason codes:
  • CryptoException.ILLEGAL_VALUE if the exponent value parameter in RSA or the p, q, g parameter set in DSA or the Field, A, B, G and R parameter set in EC is invalid.
See Also:
APDU, Signature, Cipher, RSAPublicKey, ECKey, DSAKey

getPublic

public PublicKey getPublic()
Returns a reference to the public key component of this KeyPair object.

Returns:
a reference to the public key.

getPrivate

public PrivateKey getPrivate()
Returns a reference to the private key component of this KeyPair object.

Returns:
a reference to the private key.