4.5.1.1 Public Key Formats
The ATECC608B-TFLXTLS 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, Verify
or
SecureBoot
commands, 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.
Validated Public Key Example:
50000000b2be345ad7899383a9aab4fb968b1c7835cb2cd42c7e97c26f85df8e201f3be8
00000000a82983f0a11d6ff31d66ce9932466f0f2cca21ef96bec9ce235b3d87b0f8fa9e
Invalidated Public Key Example:
A0000000b2be345ad7899383a9aab4fb968b1c7835cb2cd42c7e97c26f85df8e201f3be8
00000000a82983f0a11d6ff31d66ce9932466f0f2cca21ef96bec9ce235b3d87b0f8fa9e