com.licel.jcardsim.crypto
Class KeyAgreementImpl
java.lang.Object
javacard.security.KeyAgreement
com.licel.jcardsim.crypto.KeyAgreementImpl
public class KeyAgreementImpl
- extends KeyAgreement
Implementation KeyAgreement
based
on BouncyCastle CryptoAPI
- See Also:
KeyAgreement
,
ECDHBasicAgreement
,
ECHDCBasicAgreement
Method Summary |
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. |
byte |
getAlgorithm()
Gets the KeyAgreement algorithm. |
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 |
KeyAgreementImpl
public KeyAgreementImpl(byte algorithm)
init
public void init(PrivateKey privateKey)
throws CryptoException
- Description copied from class:
KeyAgreement
- Initializes the object with the given private key.
- Specified by:
init
in class KeyAgreement
- Parameters:
privateKey
- the private key
- Throws:
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.
getAlgorithm
public byte getAlgorithm()
- Description copied from class:
KeyAgreement
- Gets the KeyAgreement algorithm.
- Specified by:
getAlgorithm
in class KeyAgreement
- Returns:
- the algorithm code defined above
generateSecret
public short generateSecret(byte[] publicData,
short publicOffset,
short publicLength,
byte[] secret,
short secretOffset)
throws CryptoException
- Description copied from class:
KeyAgreement
- Generates the secret data as per the requested algorithm using the
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.
- Specified by:
generateSecret
in class KeyAgreement
- Parameters:
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
- Returns:
- byte length of the secret
- Throws:
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.