public interface ECKey
ECKey
interface is the base interface for the EC algorithm's private
and public key implementations. An EC private key implementation must also
implement the ECPrivateKey
interface methods. An EC public key
implementation must also implement the ECPublicKey
interface methods.
The equation of the curves for keys of type TYPE_EC_FP_PUBLIC
or TYPE_EC_FP_PRIVATE
is y^2 = x^3 + A * x + B.
The equation of the curves for keys of type
TYPE_EC_F2M_PUBLIC
or TYPE_EC_F2M_PRIVATE
is y^2 + x * y = x^3 + A * x^2 + B.
The notation used to describe parameters specific to the EC algorithm is based on the naming conventions established in [IEEE P1363].
ECPublicKey
,
ECPrivateKey
,
KeyBuilder
,
Signature
,
javacardx.crypto.KeyEncryption
,
KeyAgreement
Modifier and Type  Method and Description 

short 
getA(byte[] buffer,
short offset)
Returns the first coefficient of the curve of the key.

short 
getB(byte[] buffer,
short offset)
Returns the second coefficient of the curve of the key.

short 
getField(byte[] buffer,
short offset)
Returns the field specification parameter value of the key.

short 
getG(byte[] buffer,
short offset)
Returns the fixed point of the curve.

short 
getK()
Returns the cofactor of the order of the fixed point G of the curve.

short 
getR(byte[] buffer,
short offset)
Returns the order of the fixed point G of the curve.

void 
setA(byte[] buffer,
short offset,
short length)
Sets the first coefficient of the curve of the key.

void 
setB(byte[] buffer,
short offset,
short length)
Sets the second coefficient of the curve of the key.

void 
setFieldF2M(short e)
Sets the field specification parameter value for keys
of type
TYPE_EC_F2M_PUBLIC or TYPE_EC_F2M_PRIVATE in
the case where the polynomial is a trinomial, of the form
x^n + x^e + 1 (where n is the bit length of the key). 
void 
setFieldF2M(short e1,
short e2,
short e3)
Sets the field specification parameter value for keys
of type
TYPE_EC_F2M_PUBLIC or TYPE_EC_F2M_PRIVATE in
the case where the polynomial is a pentanomial, of the form
x^n + x^e1 + x^e2 + x^e3 + 1 (where n is the bit length of the key). 
void 
setFieldFP(byte[] buffer,
short offset,
short length)
Sets the field specification parameter value for keys of type
TYPE_EC_FP_PRIVATE or TYPE_EC_FP_PUBLIC . 
void 
setG(byte[] buffer,
short offset,
short length)
Sets the fixed point of the curve.

void 
setK(short K)
Sets the cofactor of the order of the fixed point G of the curve.

void 
setR(byte[] buffer,
short offset,
short length)
Sets the order of the fixed point G of the curve.

void setFieldFP(byte[] buffer, short offset, short length) throws CryptoException
TYPE_EC_FP_PRIVATE
or TYPE_EC_FP_PUBLIC
. The
specified value is the prime p corresponding to the field GF(p).
The plain text data format is bigendian and rightaligned
(the least significant bit is the least significant bit of last byte).
Input parameter data is copied into the internal representation.
Note:
javacardx.crypto.KeyEncryption
interface and the Cipher
object specified via setKeyCipher()
is not null
, the key value is decrypted using the Cipher
object.
buffer
 the input bufferoffset
 the offset into the input buffer at which the parameter value beginslength
 the byte length of the parameter valueCryptoException
 with the following reason codes:
CryptoException.ILLEGAL_VALUE
if the input parameter data
is inconsistent with the key length or if input data decryption is
required and fails.
CryptoException.NO_SUCH_ALGORITHM
if the key is neither
of type TYPE_EC_FP_PUBLIC
nor TYPE_EC_FP_PRIVATE
.
void setFieldF2M(short e) throws CryptoException
TYPE_EC_F2M_PUBLIC
or TYPE_EC_F2M_PRIVATE
in
the case where the polynomial is a trinomial, of the form
x^n + x^e + 1 (where n is the bit length of the key).
It is required that n > e > 0.e
 the value of the intermediate exponent of the trinomialCryptoException
 with the following reason codes:
CryptoException.ILLEGAL_VALUE
if the input parameter e
is not such that 0 < e < n.
CryptoException.NO_SUCH_ALGORITHM
if the key is neither
of type TYPE_EC_F2M_PUBLIC
nor TYPE_EC_F2M_PRIVATE
. void setFieldF2M(short e1, short e2, short e3) throws CryptoException
TYPE_EC_F2M_PUBLIC
or TYPE_EC_F2M_PRIVATE
in
the case where the polynomial is a pentanomial, of the form
x^n + x^e1 + x^e2 + x^e3 + 1 (where n is the bit length of the key).
It is required for all ei where ei = {e1, e2, e3} that n > ei > 0.e1
 the value of the first of the intermediate exponents of the
pentanomiale2
 the value of the second of the intermediate exponent of the
pentanomiale3
 the value of the third of the intermediate exponentsCryptoException
 with the following reason codes:
CryptoException.ILLEGAL_VALUE
if the input parameters
ei where ei = {e1
, e2
, e3
}
are not such that for all ei, n > ei > 0.
CryptoException.NO_SUCH_ALGORITHM
if the key is neither
of type TYPE_EC_F2M_PUBLIC
nor TYPE_EC_F2M_PRIVATE
.
void setA(byte[] buffer, short offset, short length) throws CryptoException
TYPE_EC_FP_PRIVATE
or TYPE_EC_FP_PUBLIC
,
this is the value of A as an integer modulo the field specification
parameter p, that is, an integer in the range 0
to p1.
For keys of type TYPE_EC_F2M_PRIVATE
or
TYPE_EC_F2M_PUBLIC
, the bit representation of this value
specifies a polynomial with binary coefficients which represents
the value of A in the field.
The plain text data format is bigendian and rightaligned
(the least significant bit is the least significant bit of last byte).
Input parameter data is copied into the internal representation.
Note:
javacardx.crypto.KeyEncryption
interface and the Cipher
object specified via setKeyCipher()
is not null
, the key value is decrypted using the Cipher
object.
buffer
 the input bufferoffset
 the offset into the input buffer at which the
coefficient value beginslength
 the byte length of the coefficient valueCryptoException
 with the following reason codes:CryptoException.ILLEGAL_VALUE
if the input parameter data
is inconsistent with the key length or if input data decryption is
required and fails.void setB(byte[] buffer, short offset, short length) throws CryptoException
TYPE_EC_FP_PRIVATE
or TYPE_EC_FP_PUBLIC
,
this is the value of B as an integer modulo the field specification
parameter p, that is, an integer in the range 0
to p1.
For keys of type TYPE_EC_F2M_PRIVATE
or
TYPE_EC_F2M_PUBLIC
, the bit representation of this value
specifies a polynomial with binary coefficients which represents
the value of B in the field.
The plain text data format is bigendian and rightaligned
(the least significant bit is the least significant bit of last byte).
Input parameter data is copied into the internal representation.
Note:
javacardx.crypto.KeyEncryption
interface and the Cipher
object specified via setKeyCipher()
is not null
, the key value is decrypted using the Cipher
object.
buffer
 the input bufferoffset
 the offset into the input buffer at which the
coefficient value beginslength
 the byte length of the coefficient valueCryptoException
 with the following reason codes:
CryptoException.ILLEGAL_VALUE
if the input parameter data
is inconsistent with the key length or if input data decryption is required
and fails.
void setG(byte[] buffer, short offset, short length) throws CryptoException
Note:
javacardx.crypto.KeyEncryption
interface and the Cipher
object specified via setKeyCipher()
is not null
, the key value is decrypted using the Cipher
object.
buffer
 the input bufferoffset
 the offset into the input buffer at which the
point specification beginslength
 the byte length of the point specificationCryptoException
 with the following reason codes:
CryptoException.ILLEGAL_VALUE
if the input parameter
data format is incorrect, or if the input parameter data is inconsistent with the key length,
or if input data decryption is required and fails.
void setR(byte[] buffer, short offset, short length) throws CryptoException
buffer
 the input bufferoffset
 the offset into the input buffer at which the order beginslength
 the byte length of the orderCryptoException
 with the following reason codes:
CryptoException.ILLEGAL_VALUE
if the input parameter data
is inconsistent with the key length, or if input data decryption
is required and fails.
Note:
javacardx.crypto.KeyEncryption
interface and the Cipher
object specified via setKeyCipher()
is not null
, the key value is decrypted using the Cipher
object.
void setK(short K)
KeyAgreement
algorithm type
ALG_EC_SVDP_DHC
requires that the cofactor, K, be initialized.K
 the value of the cofactorshort getField(byte[] buffer, short offset) throws CryptoException
TYPE_EC_FP_PRIVATE
or TYPE_EC_FP_PUBLIC
,
this is the value of the prime p corresponding to the field GF(p).
For keys of type TYPE_EC_F2M_PRIVATE
or
TYPE_EC_F2M_PUBLIC
, it is the value whose bit representation
specifies the polynomial with binary coefficients used to define the
arithmetic operations in the field GF(2^n)
The plain text data format is bigendian and rightaligned
(the least significant bit is the least significant bit of last byte).buffer
 the output bufferoffset
 the offset into the output buffer at which the
parameter value is to beginCryptoException
 with the following reason code:
CryptoException.UNINITIALIZED_KEY
if the field specification parameter
value of the key has not been
successfully initialized since the
time the initialized state of the key was set to false.
Key
short getA(byte[] buffer, short offset) throws CryptoException
TYPE_EC_FP_PRIVATE
or TYPE_EC_FP_PUBLIC
,
this is the value of A as an integer modulo the field specification
parameter p, that is, an integer in the range 0
to p1.
For keys of type TYPE_EC_F2M_PRIVATE
or
TYPE_EC_F2M_PUBLIC
, the bit representation of this value
specifies a polynomial with binary coefficients which represents
the value of A in the field.
The plain text data format is bigendian and rightaligned
(the least significant bit is the least significant bit of last byte).buffer
 the output bufferoffset
 the offset into the output buffer at which the
coefficient value is to beginCryptoException
 with the following reason code:
CryptoException.UNINITIALIZED_KEY
if the coefficient of the curve
of the key has not been
successfully initialized since the
time the initialized state of the key was set to false.
Key
short getB(byte[] buffer, short offset) throws CryptoException
TYPE_EC_FP_PRIVATE
or TYPE_EC_FP_PUBLIC
,
this is the value of B as an integer modulo the field specification
parameter p, that is, an integer in the range 0 to p1.
For keys of type TYPE_EC_F2M_PRIVATE
or
TYPE_EC_F2M_PUBLIC
, the bit representation of this value
specifies a polynomial with binary coefficients which represents
the value of B in the field.
The plain text data format is bigendian and rightaligned
(the least significant bit is the least significant bit of last byte).buffer
 the output bufferoffset
 the offset into the output buffer at which the
coefficient value is to beginCryptoException
 with the following reason code:
CryptoException.UNINITIALIZED_KEY
if the second coefficient of the curve
of the key has not been
successfully initialized since the
time the initialized state of the key was set to false.
Key
short getG(byte[] buffer, short offset) throws CryptoException
buffer
 the output bufferoffset
 the offset into the output buffer at which the
point specification data is to beginCryptoException
 with the following reason code:
CryptoException.UNINITIALIZED_KEY
if the fixed point of
the curve of the key has not been
successfully initialized since the
time the initialized state of the key was set to false.
Key
short getR(byte[] buffer, short offset) throws CryptoException
buffer
 the output bufferoffset
 the offset into the input buffer at which the order beginsCryptoException
 with the following reason code:
CryptoException.UNINITIALIZED_KEY
if the order of the fixed point
G of the curve of the key has not been
successfully initialized since the
time the initialized state of the key was set to false.
Key
short getK() throws CryptoException
CryptoException
 with the following reason codes:
CryptoException.UNINITIALIZED_KEY
if the cofactor of the
order of the fixed point G of the curve of the key has not been
successfully initialized since the
time the initialized state of the key was set to false.
Key