X-Git-Url: https://git.exim.org/exim.git/blobdiff_plain/d73e45df63ef6602fa32bd3e196d20735a0b69b5..1d28cc061677bd07d9bed48dd84bd5c590247043:/src/src/pdkim/signing.h diff --git a/src/src/pdkim/signing.h b/src/src/pdkim/signing.h index 04288103e..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 */ @@ -19,39 +20,53 @@ #elif defined(SIGN_GNUTLS) # include # include -# include +# include #elif defined(SIGN_GCRYPT) -# include -# include +# include +# include #endif #include "../blob.h" +typedef enum { + KEYTYPE_RSA, + KEYTYPE_ED25519 +} keytype; + +typedef enum { + KEYFMT_DER, /* an asn.1 structure */ + KEYFMT_ED25519_BARE /* just the key */ +} keyformat; + #ifdef SIGN_OPENSSL typedef struct { - EVP_PKEY * key; + keytype keytype; + EVP_PKEY * key; } es_ctx; typedef struct { - EVP_PKEY * key; + keytype keytype; + EVP_PKEY * key; } ev_ctx; #elif defined(SIGN_GNUTLS) typedef struct { - gnutls_x509_privkey_t key; + keytype keytype; + gnutls_privkey_t key; } es_ctx; typedef struct { + keytype keytype; gnutls_pubkey_t key; } ev_ctx; #elif defined(SIGN_GCRYPT) typedef struct { - int keytype; + keytype keytype; gcry_mpi_t n; gcry_mpi_t e; gcry_mpi_t d; @@ -63,7 +78,7 @@ typedef struct { } es_ctx; typedef struct { - int keytype; + keytype keytype; gcry_mpi_t n; gcry_mpi_t e; } ev_ctx; @@ -72,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 */