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