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 |