version 1.6, 2019/11/15 15:41:01 |
version 1.7, 2019/11/18 16:08:57 |
|
|
#include <stddef.h> |
#include <stddef.h> |
#include <stdarg.h> |
#include <stdarg.h> |
|
|
|
#ifdef WITH_OPENSSL |
#include <openssl/opensslv.h> |
#include <openssl/opensslv.h> |
#include <openssl/crypto.h> |
#include <openssl/crypto.h> |
#include <openssl/bn.h> |
#include <openssl/bn.h> |
#include <openssl/ec.h> |
#include <openssl/ec.h> |
#include <openssl/ecdsa.h> |
#include <openssl/ecdsa.h> |
|
#endif /* WITH_OPENSSL */ |
|
|
#include <fido.h> |
#include <fido.h> |
|
|
|
|
return dev; |
return dev; |
} |
} |
|
|
|
#ifdef WITH_OPENSSL |
/* |
/* |
* The key returned via fido_cred_pubkey_ptr() is in affine coordinates, |
* The key returned via fido_cred_pubkey_ptr() is in affine coordinates, |
* but the API expects a SEC1 octet string. |
* but the API expects a SEC1 octet string. |
|
|
BN_clear_free(y); |
BN_clear_free(y); |
return ret; |
return ret; |
} |
} |
|
#endif /* WITH_OPENSSL */ |
|
|
static int |
static int |
pack_public_key_ed25519(fido_cred_t *cred, struct sk_enroll_response *response) |
pack_public_key_ed25519(fido_cred_t *cred, struct sk_enroll_response *response) |
|
|
pack_public_key(int alg, fido_cred_t *cred, struct sk_enroll_response *response) |
pack_public_key(int alg, fido_cred_t *cred, struct sk_enroll_response *response) |
{ |
{ |
switch(alg) { |
switch(alg) { |
|
#ifdef WITH_OPENSSL |
case SK_ECDSA: |
case SK_ECDSA: |
return pack_public_key_ecdsa(cred, response); |
return pack_public_key_ecdsa(cred, response); |
|
#endif /* WITH_OPENSSL */ |
case SK_ED25519: |
case SK_ED25519: |
return pack_public_key_ed25519(cred, response); |
return pack_public_key_ed25519(cred, response); |
default: |
default: |
|
|
} |
} |
*enroll_response = NULL; |
*enroll_response = NULL; |
switch(alg) { |
switch(alg) { |
|
#ifdef WITH_OPENSSL |
case SK_ECDSA: |
case SK_ECDSA: |
cose_alg = COSE_ES256; |
cose_alg = COSE_ES256; |
break; |
break; |
|
#endif /* WITH_OPENSSL */ |
case SK_ED25519: |
case SK_ED25519: |
cose_alg = COSE_EDDSA; |
cose_alg = COSE_EDDSA; |
break; |
break; |
|
|
return ret; |
return ret; |
} |
} |
|
|
|
#ifdef WITH_OPENSSL |
static int |
static int |
pack_sig_ecdsa(fido_assert_t *assert, struct sk_sign_response *response) |
pack_sig_ecdsa(fido_assert_t *assert, struct sk_sign_response *response) |
{ |
{ |
|
|
} |
} |
return ret; |
return ret; |
} |
} |
|
#endif /* WITH_OPENSSL */ |
|
|
static int |
static int |
pack_sig_ed25519(fido_assert_t *assert, struct sk_sign_response *response) |
pack_sig_ed25519(fido_assert_t *assert, struct sk_sign_response *response) |
|
|
pack_sig(int alg, fido_assert_t *assert, struct sk_sign_response *response) |
pack_sig(int alg, fido_assert_t *assert, struct sk_sign_response *response) |
{ |
{ |
switch(alg) { |
switch(alg) { |
|
#ifdef WITH_OPENSSL |
case SK_ECDSA: |
case SK_ECDSA: |
return pack_sig_ecdsa(assert, response); |
return pack_sig_ecdsa(assert, response); |
|
#endif /* WITH_OPENSSL */ |
case SK_ED25519: |
case SK_ED25519: |
return pack_sig_ed25519(assert, response); |
return pack_sig_ed25519(assert, response); |
default: |
default: |