xref: /openbsd-src/lib/libfido2/src/fido/eddsa.h (revision 2b41d92f450f328536407da133603120b968c44b)
1d75efeb7Sdjm /*
2d75efeb7Sdjm  * Copyright (c) 2019 Yubico AB. All rights reserved.
3d75efeb7Sdjm  * Use of this source code is governed by a BSD-style
4d75efeb7Sdjm  * license that can be found in the LICENSE file.
5d75efeb7Sdjm  */
6d75efeb7Sdjm 
7d75efeb7Sdjm #ifndef _FIDO_EDDSA_H
8d75efeb7Sdjm #define _FIDO_EDDSA_H
9d75efeb7Sdjm 
10d75efeb7Sdjm #include <openssl/ec.h>
11d75efeb7Sdjm 
12d75efeb7Sdjm #include <stdint.h>
13d75efeb7Sdjm #include <stdlib.h>
14d75efeb7Sdjm 
1532a20e26Sdjm #ifdef _FIDO_INTERNAL
1632a20e26Sdjm #include "types.h"
1732a20e26Sdjm #else
1832a20e26Sdjm #include <fido.h>
1932a20e26Sdjm #endif
2032a20e26Sdjm 
21739189a3Sdjm #ifdef __cplusplus
22739189a3Sdjm extern "C" {
23739189a3Sdjm #endif /* __cplusplus */
24739189a3Sdjm 
25d75efeb7Sdjm eddsa_pk_t *eddsa_pk_new(void);
26d75efeb7Sdjm void eddsa_pk_free(eddsa_pk_t **);
27d75efeb7Sdjm EVP_PKEY *eddsa_pk_to_EVP_PKEY(const eddsa_pk_t *);
28d75efeb7Sdjm 
29d75efeb7Sdjm int eddsa_pk_from_EVP_PKEY(eddsa_pk_t *, const EVP_PKEY *);
30d75efeb7Sdjm int eddsa_pk_from_ptr(eddsa_pk_t *, const void *, size_t);
31d75efeb7Sdjm 
32d75efeb7Sdjm #ifdef _FIDO_INTERNAL
33d75efeb7Sdjm 
34*2b41d92fStb #if defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x3070000f
35d75efeb7Sdjm #define EVP_PKEY_ED25519 EVP_PKEY_NONE
36d75efeb7Sdjm int EVP_PKEY_get_raw_public_key(const EVP_PKEY *, unsigned char *, size_t *);
37d75efeb7Sdjm EVP_PKEY *EVP_PKEY_new_raw_public_key(int, ENGINE *, const unsigned char *,
38d75efeb7Sdjm     size_t);
39d75efeb7Sdjm int EVP_DigestVerify(EVP_MD_CTX *, const unsigned char *, size_t,
40d75efeb7Sdjm     const unsigned char *, size_t);
41ab19a69eSdjm #endif /* LIBRESSL_VERSION_NUMBER */
42d75efeb7Sdjm 
43d75efeb7Sdjm #endif /* _FIDO_INTERNAL */
44d75efeb7Sdjm 
45739189a3Sdjm #ifdef __cplusplus
46739189a3Sdjm } /* extern "C" */
47739189a3Sdjm #endif /* __cplusplus */
48739189a3Sdjm 
49d75efeb7Sdjm #endif /* !_FIDO_EDDSA_H */
50