X-Git-Url: https://vcs.fsf.org/?p=exim.git;a=blobdiff_plain;f=src%2Fsrc%2Fpdkim%2Fsigning.h;h=6ecde7537f3d491c958f04ce9c22b2322125a3f7;hp=abf25598800f8ad7afd8dd36a08e713367fbb91e;hb=a841a6eca79ff08b36f2225dcf89c1c162bb8777;hpb=89dd53dfbf0166d98032ad1f72428ceda6baf52a diff --git a/src/src/pdkim/signing.h b/src/src/pdkim/signing.h index abf255988..6ecde7537 100644 --- a/src/src/pdkim/signing.h +++ b/src/src/pdkim/signing.h @@ -1,7 +1,7 @@ /* * PDKIM - a RFC4871 (DKIM) implementation * - * Copyright (C) 2016 Exim maintainers + * Copyright (C) 1995 - 2018 Exim maintainers * * RSA signing/verification interface */ @@ -19,39 +19,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 +77,7 @@ typedef struct { } es_ctx; typedef struct { - int keytype; + keytype keytype; gcry_mpi_t n; gcry_mpi_t e; } ev_ctx; @@ -72,11 +86,11 @@ 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_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 *, ev_ctx *); +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*/