PKA public-key certificate section
- A required PKA public-key certificate (section identifier X'40')
- A required public-key subsection:
- For an ECC key, an ECC public-key subsection (subsection identifier X'22')
- For an RSA key, an RSA public-key subsection (subsection identifier X'41')
- An optional PKA certificate information subsection (subsection identifier X'42') which includes
one, two, or three TLV objects:
- PKA user-data TLV object (tag identifier X'50')
- PKA private key ID object (tag identifier X'51')
- PKA serial number TLV object (tag identifier X'52')
- A required PKA signature subsection (subsection identifier X'45'), followed by any number of optional PKA signature subsections
The PKA public-key certification section is described followed by descriptions of the related subsections and TLV objects that can be concatenated to the section.
| Offset (bytes) | Length (bytes) | Description |
|---|---|---|
| 000 | 001 | Section identifier:
|
| 001 | 001 | Section version number (X'00'). |
| 002 | 002 | Section length in bytes. Includes:
|
| Offset (bytes) | Length (bytes) | Description |
|---|---|---|
| 000 | 001 | Subsection identifier:
|
| 001 | 001 | Subsection version number (X'00') |
| 002 | 002 | Subsection length in bytes (14 + xxx) |
| 004 | 004 | Reserved, binary zero. |
| 008 | 001 | Curve type:
|
| 009 | 001 | Reserved, binary zero. |
| 010 | 002 |
|
| 012 | 002 | Length of public key q in bytes. Value includes length key material plus one (to include a one-byte flag that indicates if the key material is compressed). |
| 014 | xxx | Public key q. |
| Offset (bytes) | Length (bytes) | Description |
|---|---|---|
| 000 | 001 | Subsection identifier:
|
| 001 | 001 | Subsection version number (X'00'). |
| 002 | 002 | Subsection length in bytes (12 + xxx + yyy).
|
| 004 | 002 | Reserved, binary zero. |
| 006 | 002 | RSA public-key exponent field length in bytes, xxx.
Maximum length is 512 bytes.
|
| 008 | 002 | Public-key modulus length in bits.
|
| 010 | 002 | RSA public-key modulus field length in bytes, yyy.
Note: If the token contains an RSA private key section, this field length,
yyy, should be zero. The RSA private key section contains the modulus.
|
| 012 | xxx | Public-key exponent. Must be odd, and 1 ≤ e < n. Must not exceed 512 bytes. |
| 012+xxx | yyy | Modulus, n. n = pq, where p and q are prime and 2512 ≤ n < 24096. This field is absent when the modulus is contained in the private-key section. If present, the field length is 64 - 512 bytes. |
| Offset (bytes) | Length (bytes) | Description |
|---|---|---|
| 000 | 001 | Subsection identifier:
|
| 001 | 001 | Subsection version number (X'00'). |
| 002 | 002 | Subsection length in bytes (4+iii), where iii is:
length of TLV object X'50' + |
| 004 | iii | The information field that contains any of the optional TLV objects:
|
| Offset (bytes) | Length (bytes) | Description |
|---|---|---|
| 000 | 001 | Tag identifier:
|
| 001 | 001 | TLV object version number (X'00'). |
| 002 | 002 | TLV object length in bytes (4+uuu; 0≤uuu≤64). |
| 004 | uuu | User-provided data. |
| Offset (bytes) | Length (bytes) | Description |
|---|---|---|
| 000 | 001 | Tag identifier:
|
| 001 | 001 | TLV object version number (X'00'). |
| 002 | 002 | TLV object length in bytes (X'0014'). |
| 004 | 016 | EID string of the CCA node that generated the public and private key. This TLV must be provided in a skeleton key-token with usage of the PKA Key Generate verb. The verb fills in the EID string prior to certifying the public key. The EID value is encoded using the ASCII character set. |
| Offset (bytes) | Length (bytes) | Description |
|---|---|---|
| 000 | 001 | Tag identifier:
|
| 001 | 001 | TLV object version number (X'00'). |
| 002 | 002 | TLV object length in bytes (X'000C'). |
| 004 | 008 | Serial number of the coprocessor that generated the public and private key. This TLV must be provided in a skeleton key-token with usage of the PKA Key Generate verb. The verb fills in the serial number prior to certifying the public key. |
| Offset (bytes) | Length (bytes) | Description |
|---|---|---|
| 000 | 001 | Subsection identifier:
|
| 001 | 001 | Subsection version number (X'00'). |
| 002 | 002 | Subsection length in bytes (70+sss). |
| 004 | 001 | Hash algorithm identifier: For RSA public-key (X'04') with PKA public-key certificate (X'40'):
For ECC public-key (X'21') with PKA public-key certificate (X'40'):
|
| 005 | 001 | Signature formatting identifier: For RSA public-key (X'04') with PKA public-key certificate (X'40'):
For ECC public-key (X'21') with PKA public-key certificate (X'40'):
|
| 006 | 064 | Signature-key identifier; the key label of the key used to generate the signature. |
| 070 | sss | The signature field: The signature is calculated on data that begins with the signature section identifier (X'40') through the byte immediately preceding this signature field. |
|
Note: More than one signature subsection can be included in a signature section. This accommodates
the possibility of a self-signature as well as a device-key signature.
|
||