Verifying an attestation bundle
An attestation bundle can be verified as follows.
$ nfkmattest verify PATH
This will output information about the key in JSON format. The fields are:
| Key | Syntax | Meaning |
|---|---|---|
|
string |
The path of the bundle file |
|
string |
Type of protection, either |
|
boolean |
Whether key recovery is enabled for the key, if available |
|
list |
Key usage permissions |
|
string |
Electronic Serial Number (ESN) of the HSM used to generate the key |
|
string |
The hash of the nShield Security Officer key (KNSO) for the Security World used to generate the key |
|
object |
Public key parameters (a more detailed breakdown can be seen in the section below) |
Private key operations
The permissions field is a list of the permitted private key operations.
The following are the possible options.
| Permission | Description |
|---|---|
|
Key can decrypt messages, yielding plaintext |
|
Key can decrypt messages, yielding a key inside the HSM (this includes loading of key blobs) |
|
Key can sign messages |
Public key parameters
The k field is the public key is an nCore M_KeyData structure in JSON format.
The key object has two fields.
| Key | Syntax | Meaning |
|---|---|---|
|
string |
The public key type, described in sections below |
|
object |
Public key material |
In almost all cases, integers are represented as the RFC4648 section 4 base64 encoding of the big-endian form of the integer value. The representation is normally minimal, meaning that a value of 0 is represented by the empty string.
The fields in k.data will depend on the key type.
RSA public keys
The key type is RSAPublic.
The data object has two fields.
| Key | Syntax | Meaning |
|---|---|---|
|
base64(integer) |
Public modulus |
|
base64(integer) |
Public exponent |
DSA and KCDSA public keys
The key types are DSAPublic and KCDSAPublic.
The data object has the following fields.
| Key | Syntax | Meaning |
|---|---|---|
|
object |
Container for domain parameters |
|
base64(integer) |
Field modulus |
|
base64(integer) |
Subgroup order |
|
base64(integer) |
Subgroup generator |
|
base64(integer) |
Public key |
ECC public keys
The key types are ECDSAPublic (signature only), ECDHPublic (key agreement only) and ECPublic.
The data object has the following fields.
| Key | Syntax | Meaning |
|---|---|---|
|
object |
Container for domain parameters |
|
string |
Domain parameters of curve (see below for supported values) |
|
object |
Public point |
|
list |
Always empty |
|
base64(integer) |
X coordinate of public point |
|
base64(integer) |
Y coordinate of public point |
Supported values for k.data.curve.name
The supported named curves are as follows.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
If this field is Custom or CustomLCF, the full domain parameters of the curve are given in further fields. These are described in the nCore API documentation.
Ed25519 public keys
The key type is Ed25519Public.
The data object has the following field.
| Key | Syntax | Meaning |
|---|---|---|
|
base64(bytes) |
RFC8032-format public key |