mirror of
https://github.com/trezor/trezor-firmware.git
synced 2024-11-18 05:28:40 +00:00
fix(core/prodtest): Fix Optiga metadata version information handling.
[no changelog]
This commit is contained in:
parent
8de2d8989d
commit
fb80dd5a36
@ -509,8 +509,9 @@ void keyfido_write(char *data) {
|
||||
// Set change access condition for the FIDO key to Int(0xE0E8), so that we
|
||||
// can write the FIDO key using the trust anchor in OID 0xE0E8.
|
||||
memzero(&metadata, sizeof(metadata));
|
||||
metadata.change.ptr = (const uint8_t *)"\x21\xe0\xe8";
|
||||
metadata.change.len = 3;
|
||||
metadata.change = (const optiga_metadata_item)OPTIGA_ACCESS_CONDITION(
|
||||
OPTIGA_ACCESS_COND_INT, OID_TRUST_ANCHOR);
|
||||
metadata.version = OPTIGA_META_VERSION_DEFAULT;
|
||||
if (!set_metadata(OID_KEY_FIDO, &metadata)) {
|
||||
return;
|
||||
}
|
||||
|
@ -17,7 +17,7 @@
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef PRODTEST_OPTIGA_PRODTESTS_H
|
||||
#ifndef PRODTEST_OPTIGA_PRODTEST_H
|
||||
#define PRODTEST_OPTIGA_PRODTEST_H
|
||||
|
||||
#include <stdbool.h>
|
||||
@ -30,7 +30,7 @@
|
||||
#define OID_KEY_DEV OPTIGA_OID_ECC_KEY + 0
|
||||
#define OID_KEY_FIDO OPTIGA_OID_ECC_KEY + 2
|
||||
#define OID_KEY_PAIRING OPTIGA_OID_PTFBIND_SECRET
|
||||
#define OID_TRUST_ANCHOR OPTIGA_OID_CA_CERT + 0
|
||||
#define OID_TRUST_ANCHOR (OPTIGA_OID_CA_CERT + 0)
|
||||
|
||||
typedef enum {
|
||||
OPTIGA_LOCKED_TRUE,
|
||||
|
@ -47,8 +47,8 @@ const optiga_metadata_item OPTIGA_META_KEY_USE_ENC = {
|
||||
(const uint8_t[]){OPTIGA_KEY_USAGE_ENC}, 1};
|
||||
const optiga_metadata_item OPTIGA_META_KEY_USE_KEYAGREE = {
|
||||
(const uint8_t[]){OPTIGA_KEY_USAGE_KEYAGREE}, 1};
|
||||
static const optiga_metadata_item OPTIGA_META_VERSION_DEFAULT = {
|
||||
(const uint8_t *)"\xC1\x02\x00\x00", 4};
|
||||
const optiga_metadata_item OPTIGA_META_VERSION_DEFAULT = {
|
||||
(const uint8_t[]){0x00, 0x00}, 2};
|
||||
|
||||
static optiga_result process_output(uint8_t **out_data, size_t *out_size) {
|
||||
// Check that there is no trailing output data in the response.
|
||||
@ -823,7 +823,8 @@ optiga_result optiga_set_trust_anchor(void) {
|
||||
0xb0, 0xa5, 0x21, 0x2c, 0x54, 0x3a, 0x6c, 0x04, 0x72,
|
||||
};
|
||||
|
||||
return optiga_set_data_object(0xe0e8, false, TA_CERT, sizeof(TA_CERT));
|
||||
return optiga_set_data_object(OPTIGA_OID_CA_CERT, false, TA_CERT,
|
||||
sizeof(TA_CERT));
|
||||
}
|
||||
|
||||
/*
|
||||
@ -849,7 +850,8 @@ optiga_result optiga_set_priv_key(uint16_t oid, const uint8_t priv_key[32]) {
|
||||
if (metadata.version.len != 2) {
|
||||
return OPTIGA_ERR_UNEXPECTED;
|
||||
}
|
||||
payload_version = (metadata.version.ptr[0] << 8) + metadata.version.ptr[1];
|
||||
payload_version =
|
||||
((metadata.version.ptr[0] & 0x7f) << 8) + metadata.version.ptr[1];
|
||||
}
|
||||
payload_version += 1;
|
||||
|
||||
|
@ -141,6 +141,7 @@ extern const optiga_metadata_item OPTIGA_META_ACCESS_ALWAYS;
|
||||
extern const optiga_metadata_item OPTIGA_META_ACCESS_NEVER;
|
||||
extern const optiga_metadata_item OPTIGA_META_KEY_USE_ENC;
|
||||
extern const optiga_metadata_item OPTIGA_META_KEY_USE_KEYAGREE;
|
||||
extern const optiga_metadata_item OPTIGA_META_VERSION_DEFAULT;
|
||||
|
||||
optiga_result optiga_parse_metadata(const uint8_t *serialized,
|
||||
size_t serialized_size,
|
||||
|
Loading…
Reference in New Issue
Block a user