mirror of
https://github.com/trezor/trezor-firmware.git
synced 2024-11-26 17:38:39 +00:00
Adapted U2F to new hdnode API
This commit is contained in:
parent
cf38291ca4
commit
1b8bd1852e
@ -28,6 +28,7 @@
|
|||||||
#include "usb.h"
|
#include "usb.h"
|
||||||
#include "buttons.h"
|
#include "buttons.h"
|
||||||
#include "trezor.h"
|
#include "trezor.h"
|
||||||
|
#include "curves.h"
|
||||||
#include "nist256p1.h"
|
#include "nist256p1.h"
|
||||||
#include "rng.h"
|
#include "rng.h"
|
||||||
|
|
||||||
@ -427,7 +428,7 @@ void u2f_version(const APDU *a)
|
|||||||
const HDNode *getDerivedNode(uint32_t *address_n, size_t address_n_count)
|
const HDNode *getDerivedNode(uint32_t *address_n, size_t address_n_count)
|
||||||
{
|
{
|
||||||
static HDNode node;
|
static HDNode node;
|
||||||
if (!storage_getRootNode(&node)) {
|
if (!storage_getRootNode(&node, NIST256P1_NAME)) {
|
||||||
layoutHome();
|
layoutHome();
|
||||||
debugLog(0, "", "ERR: Device not init");
|
debugLog(0, "", "ERR: Device not init");
|
||||||
return 0;
|
return 0;
|
||||||
@ -467,9 +468,7 @@ const HDNode *generateKeyHandle(const uint8_t app_id[], uint8_t key_handle[])
|
|||||||
memcpy(&keybase[0], app_id, 32);
|
memcpy(&keybase[0], app_id, 32);
|
||||||
memcpy(&keybase[32], key_handle, 32);
|
memcpy(&keybase[32], key_handle, 32);
|
||||||
uint8_t sig[64];
|
uint8_t sig[64];
|
||||||
ecdsa_sign(&nist256p1, node->private_key,
|
hdnode_sign(node, (uint8_t *)&keybase, sizeof(keybase), sig, NULL);
|
||||||
(uint8_t *)&keybase, sizeof(keybase), sig,
|
|
||||||
NULL);
|
|
||||||
|
|
||||||
// Copy 32 bytes of signature into keyhandle
|
// Copy 32 bytes of signature into keyhandle
|
||||||
memcpy(&key_handle[32], sig, 32);
|
memcpy(&key_handle[32], sig, 32);
|
||||||
@ -494,9 +493,7 @@ const HDNode *validateKeyHandle(const uint8_t app_id[], const uint8_t key_handle
|
|||||||
|
|
||||||
|
|
||||||
uint8_t sig[64];
|
uint8_t sig[64];
|
||||||
ecdsa_sign(&nist256p1, node->private_key,
|
hdnode_sign(node, (uint8_t *)&keybase, sizeof(keybase), sig, NULL);
|
||||||
(uint8_t *)&keybase, sizeof(keybase), sig,
|
|
||||||
NULL);
|
|
||||||
|
|
||||||
if (memcmp(&key_handle[32], sig, 32) !=0)
|
if (memcmp(&key_handle[32], sig, 32) !=0)
|
||||||
return NULL;
|
return NULL;
|
||||||
@ -572,7 +569,7 @@ void u2f_register(const APDU *a)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
ecdsa_get_public_key65(&nist256p1, node->private_key,
|
ecdsa_get_public_key65(node->curve->params, node->private_key,
|
||||||
(uint8_t *)&resp->pubKey);
|
(uint8_t *)&resp->pubKey);
|
||||||
|
|
||||||
memcpy(resp->keyHandleCertSig + resp->keyHandleLen,
|
memcpy(resp->keyHandleCertSig + resp->keyHandleLen,
|
||||||
|
Loading…
Reference in New Issue
Block a user