4.5.1.1 Public Key Formats
The ATECC608A-TNGLoRaWAN works with the P-256 elliptic curve public keys in two formats. The following example illustrates those two formats in detail.
For the following examples, we'll use a sample public key, with the X and Y integers expressed as fixed-width big-endian unsigned integers:
X: b2be345ad7899383a9aab4fb968b1c7835cb2cd42c7e97c26f85df8e201f3be8
Y: a82983f0a11d6ff31d66ce9932466f0f2cca21ef96bec9ce235b3d87b0f8fa9e
Command Public Key Format
Any command that returns a public key (GenKey) or accepts a public key as a parameter (Verify and ECDH) will format the public key as the X and Y big-endian unsigned integers concatenated together for a total of 64 bytes.
For example:
b2be345ad7899383a9aab4fb968b1c7835cb2cd42c7e97c26f85df8e201f3be8
a82983f0a11d6ff31d66ce9932466f0f2cca21ef96bec9ce235b3d87b0f8fa9e
Stored Public Key Format
When storing a public key in a slot for use with the Verify
command, the X and Y integers will be
padded out to 36 bytes and concatenated together for a total of 72 bytes.
For example:
00000000b2be345ad7899383a9aab4fb968b1c7835cb2cd42c7e97c26f85df8e201f3be8
00000000a82983f0a11d6ff31d66ce9932466f0f2cca21ef96bec9ce235b3d87b0f8fa9e
Stored Validated Public Key Format
A validated or invalidated public key format is the same as a stored
public key format with the exception of the four Most Significant bits of the LSB.
If a key is validated, the Least Significant Nibble will be 0x5 and 0xA if
invalidated. These values can be changed by the Verify
command in
Validate or Invalidate mode. When written, the key will be initially
invalidated.
Example Validated Public Key:
50000000b2be345ad7899383a9aab4fb968b1c7835cb2cd42c7e97c26f85df8e201f3be8
00000000a82983f0a11d6ff31d66ce9932466f0f2cca21ef96bec9ce235b3d87b0f8fa9e
Example Invalidated Public Key:
A0000000b2be345ad7899383a9aab4fb968b1c7835cb2cd42c7e97c26f85df8e201f3be8
00000000a82983f0a11d6ff31d66ce9932466f0f2cca21ef96bec9ce235b3d87b0f8fa9e