diff --git a/fido2/ctap.c b/fido2/ctap.c
index b84f9b7..de43385 100644
--- a/fido2/ctap.c
+++ b/fido2/ctap.c
@@ -351,12 +351,12 @@ static int ctap_make_auth_data(struct rpId * rp, CborEncoder * map, uint8_t * au
device_set_status(CTAPHID_STATUS_UPNEEDED);
// if NFC - not need to click a button
- int but = 1;
+ int but = 1;
if(!fromNFC)
{
but = ctap_user_presence_test();
- }
-
+ }
+
if (!but)
{
return CTAP2_ERR_OPERATION_DENIED;
@@ -1509,7 +1509,7 @@ static void ctap_state_init()
ctap_reset_rk();
}
-void ctap_init()
+void ctap_init(int init_pin)
{
crypto_ecc256_init();
@@ -1564,7 +1564,10 @@ void ctap_init()
exit(1);
}
- crypto_ecc256_make_key_pair(KEY_AGREEMENT_PUB, KEY_AGREEMENT_PRIV);
+ if (init_pin)
+ {
+ crypto_ecc256_make_key_pair(KEY_AGREEMENT_PUB, KEY_AGREEMENT_PRIV);
+ }
#ifdef BRIDGE_TO_WALLET
wallet_init();
diff --git a/fido2/ctap.h b/fido2/ctap.h
index 2df795b..d43e637 100644
--- a/fido2/ctap.h
+++ b/fido2/ctap.h
@@ -1,21 +1,21 @@
/*
* Copyright (C) 2018 SoloKeys, Inc.
- *
+ *
* This file is part of Solo.
- *
+ *
* Solo is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
- *
+ *
* Solo is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
+ *
* You should have received a copy of the GNU General Public License
* along with Solo. If not, see
- *
+ *
* This code is available under licenses for commercial use.
* Please contact SoloKeys for more information.
*/
@@ -282,7 +282,7 @@ uint8_t ctap_request(uint8_t * pkt_raw, int length, CTAP_RESPONSE * resp, bool f
int ctap_encode_der_sig(uint8_t * sigbuf, uint8_t * sigder);
// Run ctap related power-up procedures (init pinToken, generate shared secret)
-void ctap_init();
+void ctap_init(int init_pin);
// Resets state between different accesses of different applications
void ctap_reset_state();
diff --git a/fido2/main.c b/fido2/main.c
index 6f4e729..6c92394 100644
--- a/fido2/main.c
+++ b/fido2/main.c
@@ -61,16 +61,8 @@ int main(int argc, char * argv[])
);
device_init();
- // printf1(TAG_GEN,"init device\n");
- usbhid_init();
- // printf1(TAG_GEN,"init usb\n");
- ctaphid_init();
- // printf1(TAG_GEN,"init ctaphid\n");
-
- ctap_init();
- // printf1(TAG_GEN,"init ctap\n");
memset(hidmsg,0,sizeof(hidmsg));