| 
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectjavacard.security.KeyAgreement
public abstract class KeyAgreement
The KeyAgreement class is the base class for key agreement algorithms
 such as Diffie-Hellman and EC Diffie-Hellman [IEEE P1363]. Implementations
 of KeyAgreement algorithms must extend this class and implement all the
 abstract methods.
 A tear or card reset event resets an initialized KeyAgreement object to the
 state it was in when previously initialized via a call to init().
| Field Summary | |
|---|---|
static byte | 
ALG_EC_SVDP_DH
Elliptic curve secret value derivation primitive, Diffie-Hellman version, as per [IEEE P1363].  | 
static byte | 
ALG_EC_SVDP_DHC
Elliptic curve secret value derivation primitive, Diffie-Hellman version, with cofactor multiplication, as per [IEEE P1363].  | 
| Constructor Summary | |
|---|---|
protected  | 
KeyAgreement()
Protected constructor.  | 
| Method Summary | |
|---|---|
abstract  short | 
generateSecret(byte[] publicData,
               short publicOffset,
               short publicLength,
               byte[] secret,
               short secretOffset)
Generates the secret data as per the requested algorithm using the PrivateKey specified during initialization and the public key data
 provided. | 
abstract  byte | 
getAlgorithm()
Gets the KeyAgreement algorithm.  | 
static KeyAgreement | 
getInstance(byte algorithm,
            boolean externalAccess)
Creates a KeyAgreement object instance of the selected algorithm. | 
abstract  void | 
init(PrivateKey privateKey)
Initializes the object with the given private key.  | 
| Methods inherited from class java.lang.Object | 
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | 
| Field Detail | 
|---|
public static final byte ALG_EC_SVDP_DH
public static final byte ALG_EC_SVDP_DHC
ALG_EC_SVDP_DH)
| Constructor Detail | 
|---|
protected KeyAgreement()
| Method Detail | 
|---|
public static final KeyAgreement getInstance(byte algorithm, boolean externalAccess) throws CryptoException
KeyAgreement object instance of the selected algorithm.
algorithm - the desired key agreement algorithm
 Valid codes listed in ALG_ .. constants above, for example, ALG_EC_SVDP_DHexternalAccess - if true indicates that the instance will be shared among
 multiple applet instances and that the KeyAgreement instance will also be accessed (via a Shareable
 interface) when the owner of the KeyAgreement instance is not the currently selected applet.
 If true the implementation must not
 allocate CLEAR_ON_DESELECT transient space for internal data.
CryptoException - with the following reason codes:
 CryptoException.NO_SUCH_ALGORITHM if the requested
 algorithm or shared access mode is not supported.
 public abstract void init(PrivateKey privateKey) throws CryptoException
privateKey - the private key
CryptoException - with the following reason codes:
 CryptoException.ILLEGAL_VALUE if the input key type
 is inconsistent with the KeyAgreement algorithm,
 for example, if the KeyAgreement
 algorithm is ALG_EC_SVDP_DH and the key type is
 TYPE_RSA_PRIVATE, or if privKey is
 inconsistent with the implementation.CryptoException.UNINITIALIZED_KEY if privKey
 is uninitialized, or if the KeyAgreement algorithm
 is set to ALG_EC_SVDP_DHC and the cofactor, K,
 has not been successfully initialized since the time the initialized
 state of the key was set to false.public abstract byte getAlgorithm()
public abstract short generateSecret(byte[] publicData,
                                     short publicOffset,
                                     short publicLength,
                                     byte[] secret,
                                     short secretOffset)
                              throws CryptoException
PrivateKey specified during initialization and the public key data
 provided.
 Note that in the case of the algorithms ALG_EC_SVDP_DH and ALG_EC_SVDP_DHC
 the public key data provided should be the public elliptic curve
 point of the second party in the protocol, specified as per ANSI X9.62.
 A specific implementation need not support the compressed form,
 but must support the uncompressed form of the point.
publicData - buffer holding the public data of the second partypublicOffset - offset into the publicData buffer at which the data beginspublicLength - byte length of the public datasecret - buffer to hold the secret outputsecretOffset - offset into the secret array at which to start writing
 the secret
CryptoException - with the following reason codes:
 CryptoException.ILLEGAL_VALUE if the publicData
 data format is incorrect, or if the publicData data
 is inconsistent with the PrivateKey specified during initialization.
 CryptoException.INVALID_INIT if this KeyAgreement
 object is not initialized.
  | 
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||