String handling: refactor the expanding-string routines and users to use a descriptor...
[exim.git] / src / src / pdkim / signing.h
CommitLineData
2592e6c0
JH
1/*
2 * PDKIM - a RFC4871 (DKIM) implementation
3 *
4 * Copyright (C) 2016 Exim maintainers
5 *
6 * RSA signing/verification interface
7 */
8
9#include "../exim.h"
10
11#ifndef DISABLE_DKIM /* entire file */
12
13#include "crypt_ver.h"
14
d73e45df 15#ifdef SIGN_OPENSSL
2592e6c0
JH
16# include <openssl/rsa.h>
17# include <openssl/ssl.h>
18# include <openssl/err.h>
d73e45df 19#elif defined(SIGN_GNUTLS)
2592e6c0
JH
20# include <gnutls/gnutls.h>
21# include <gnutls/x509.h>
22# include <gnutls/abstract.h>
d73e45df 23#elif defined(SIGN_GCRYPT)
2592e6c0
JH
24# include <gcrypt.h>
25# include <libtasn1.h>
26#endif
27
63af6f3a 28#include "../blob.h"
2592e6c0
JH
29
30
d73e45df 31#ifdef SIGN_OPENSSL
2592e6c0
JH
32
33typedef struct {
d73e45df 34 EVP_PKEY * key;
2592e6c0
JH
35} es_ctx;
36
37typedef struct {
d73e45df 38 EVP_PKEY * key;
2592e6c0
JH
39} ev_ctx;
40
d73e45df 41#elif defined(SIGN_GNUTLS)
2592e6c0
JH
42
43typedef struct {
d73e45df 44 gnutls_x509_privkey_t key;
2592e6c0
JH
45} es_ctx;
46
47typedef struct {
d73e45df 48 gnutls_pubkey_t key;
2592e6c0
JH
49} ev_ctx;
50
d73e45df 51#elif defined(SIGN_GCRYPT)
2592e6c0
JH
52
53typedef struct {
d73e45df 54 int keytype;
2592e6c0
JH
55 gcry_mpi_t n;
56 gcry_mpi_t e;
57 gcry_mpi_t d;
58 gcry_mpi_t p;
59 gcry_mpi_t q;
60 gcry_mpi_t dp;
61 gcry_mpi_t dq;
62 gcry_mpi_t qp;
63} es_ctx;
64
65typedef struct {
d73e45df 66 int keytype;
2592e6c0
JH
67 gcry_mpi_t n;
68 gcry_mpi_t e;
69} ev_ctx;
70
71#endif
72
73
9b2583c4 74extern void exim_dkim_init(void);
acec9514 75extern gstring * exim_dkim_data_append(gstring *, uschar *);
2592e6c0 76
9b2583c4 77extern const uschar * exim_dkim_signing_init(uschar *, es_ctx *);
89dd53df 78extern const uschar * exim_dkim_sign(es_ctx *, hashmethod, blob *, blob *);
9b2583c4 79extern const uschar * exim_dkim_verify_init(blob *, ev_ctx *);
da83217f 80extern const uschar * exim_dkim_verify(ev_ctx *, hashmethod, blob *, blob *);
2592e6c0
JH
81
82#endif /*DISABLE_DKIM*/
83/* End of File */