X-Git-Url: https://git.exim.org/exim.git/blobdiff_plain/9b2583c440ab9104070054dfa02e8611799f777b..1d28cc061677bd07d9bed48dd84bd5c590247043:/src/src/pdkim/signing.h diff --git a/src/src/pdkim/signing.h b/src/src/pdkim/signing.h index 4e8580859..7760ce73f 100644 --- a/src/src/pdkim/signing.h +++ b/src/src/pdkim/signing.h @@ -1,7 +1,8 @@ /* * PDKIM - a RFC4871 (DKIM) implementation * - * Copyright (C) 2016 Exim maintainers + * Copyright (C) 1995 - 2020 Exim maintainers + * SPDX-License-Identifier: GPL-2.0-or-later * * RSA signing/verification interface */ @@ -12,45 +13,60 @@ #include "crypt_ver.h" -#ifdef RSA_OPENSSL +#ifdef SIGN_OPENSSL # include # include # include -#elif defined(RSA_GNUTLS) +#elif defined(SIGN_GNUTLS) # include # include -# include -#elif defined(RSA_GCRYPT) -# include -# include +# include +#elif defined(SIGN_GCRYPT) +# include +# include #endif #include "../blob.h" +typedef enum { + KEYTYPE_RSA, + KEYTYPE_ED25519 +} keytype; -#ifdef RSA_OPENSSL +typedef enum { + KEYFMT_DER, /* an asn.1 structure */ + KEYFMT_ED25519_BARE /* just the key */ +} keyformat; + + +#ifdef SIGN_OPENSSL typedef struct { - RSA * rsa; + keytype keytype; + EVP_PKEY * key; } es_ctx; typedef struct { - RSA * rsa; + keytype keytype; + EVP_PKEY * key; } ev_ctx; -#elif defined(RSA_GNUTLS) +#elif defined(SIGN_GNUTLS) typedef struct { - gnutls_x509_privkey_t rsa; + keytype keytype; + gnutls_privkey_t key; } es_ctx; typedef struct { - gnutls_pubkey_t rsa; + keytype keytype; + gnutls_pubkey_t key; } ev_ctx; -#elif defined(RSA_GCRYPT) +#elif defined(SIGN_GCRYPT) typedef struct { + keytype keytype; gcry_mpi_t n; gcry_mpi_t e; gcry_mpi_t d; @@ -62,6 +78,7 @@ typedef struct { } es_ctx; typedef struct { + keytype keytype; gcry_mpi_t n; gcry_mpi_t e; } ev_ctx; @@ -70,12 +87,12 @@ typedef struct { extern void exim_dkim_init(void); -extern blob * exim_dkim_data_append(blob *, int *, uschar *); +extern gstring * exim_dkim_data_append(gstring *, uschar *); -extern const uschar * exim_dkim_signing_init(uschar *, es_ctx *); -extern const uschar * exim_dkim_sign(es_ctx *, BOOL, blob *, blob *); -extern const uschar * exim_dkim_verify_init(blob *, ev_ctx *); -extern const uschar * exim_dkim_verify(ev_ctx *, BOOL, blob *, blob *); +extern const uschar * exim_dkim_signing_init(const uschar *, es_ctx *); +extern const uschar * exim_dkim_sign(es_ctx *, hashmethod, blob *, blob *); +extern const uschar * exim_dkim_verify_init(blob *, keyformat, ev_ctx *, unsigned *); +extern const uschar * exim_dkim_verify(ev_ctx *, hashmethod, blob *, blob *); #endif /*DISABLE_DKIM*/ /* End of File */