xref: /freebsd/contrib/ntp/include/ntp_crypto.h (revision 224ba2bd37e182b64f7d78defef8a6cacaad3415)
1224ba2bdSOllivier Robert /*
2224ba2bdSOllivier Robert  * ntp_crypto.h - definitions for cryptographic operations
3224ba2bdSOllivier Robert  */
4224ba2bdSOllivier Robert #ifdef AUTOKEY
5224ba2bdSOllivier Robert #include "global.h"
6224ba2bdSOllivier Robert #include "md5.h"
7224ba2bdSOllivier Robert #ifdef RSAREF
8224ba2bdSOllivier Robert #include "rsaref.h"
9224ba2bdSOllivier Robert #include "rsa.h"
10224ba2bdSOllivier Robert 
11224ba2bdSOllivier Robert #define EVP_SignInit(a, b)	R_SignInit(a, b)
12224ba2bdSOllivier Robert #define EVP_SignUpdate(a, b, c)	R_SignUpdate(a, b, c);
13224ba2bdSOllivier Robert #define EVP_SignFinal(a, b, c, d) R_SignFinal(a, b, c, d);
14224ba2bdSOllivier Robert #define EVP_VerifyInit(a, b)	R_VerifyInit(a, b)
15224ba2bdSOllivier Robert #define EVP_VerifyUpdate(a, b, c) R_VerifyUpdate(a, b, c);
16224ba2bdSOllivier Robert #define EVP_VerifyFinal(a, b, c, d) R_VerifyFinal(a, b, c, d);
17224ba2bdSOllivier Robert 
18224ba2bdSOllivier Robert #endif /* RSAREF */
19224ba2bdSOllivier Robert 
20224ba2bdSOllivier Robert /*
21224ba2bdSOllivier Robert  * Cryptostatus word
22224ba2bdSOllivier Robert  */
23224ba2bdSOllivier Robert #define CRYPTO_FLAG_ENAB  0x01	/* crypto enable */
24224ba2bdSOllivier Robert #define CRYPTO_FLAG_RSA	  0x02	/* public/private keys */
25224ba2bdSOllivier Robert #define CRYPTO_FLAG_CERT  0x04	/* certificate */
26224ba2bdSOllivier Robert #define CRYPTO_FLAG_DH	  0x08	/* agreement parameters */
27224ba2bdSOllivier Robert #define CRYPTO_FLAG_TAI	  0x10	/* leapseconds table */
28224ba2bdSOllivier Robert 
29224ba2bdSOllivier Robert /*
30224ba2bdSOllivier Robert  * Extension field definitions
31224ba2bdSOllivier Robert  */
32224ba2bdSOllivier Robert #define CRYPTO_VN	1	/* current protocol version number */
33224ba2bdSOllivier Robert 
34224ba2bdSOllivier Robert #define CRYPTO_NULL	((CRYPTO_VN << 8) | 0) /* no operation */
35224ba2bdSOllivier Robert #define CRYPTO_STAT	((CRYPTO_VN << 8) | 1) /* status */
36224ba2bdSOllivier Robert #define CRYPTO_ASSOC	((CRYPTO_VN << 8) | 2) /* association ID */
37224ba2bdSOllivier Robert #define CRYPTO_AUTO	((CRYPTO_VN << 8) | 3) /* autokey values */
38224ba2bdSOllivier Robert #define CRYPTO_PRIV	((CRYPTO_VN << 8) | 4) /* cookie value */
39224ba2bdSOllivier Robert #define CRYPTO_DHPAR	((CRYPTO_VN << 8) | 5) /* agreement params */
40224ba2bdSOllivier Robert #define CRYPTO_DH	((CRYPTO_VN << 8) | 6) /* public value */
41224ba2bdSOllivier Robert #define CRYPTO_NAME	((CRYPTO_VN << 8) | 7) /* host name/pub key */
42224ba2bdSOllivier Robert #define CRYPTO_CERT	((CRYPTO_VN << 8) | 8) /* PKI certificate */
43224ba2bdSOllivier Robert #define CRYPTO_TAI	((CRYPTO_VN << 8) | 9) /* leapseconds table */
44224ba2bdSOllivier Robert #define CRYPTO_RESP	0x8000			/* response */
45224ba2bdSOllivier Robert #define CRYPTO_ERROR	0x4000			/* error */
46224ba2bdSOllivier Robert 
47224ba2bdSOllivier Robert #ifdef PUBKEY
48224ba2bdSOllivier Robert /*
49224ba2bdSOllivier Robert  * Configuration codes
50224ba2bdSOllivier Robert  */
51224ba2bdSOllivier Robert #define CRYPTO_CONF_NONE  0	/* nothing doing */
52224ba2bdSOllivier Robert #define CRYPTO_CONF_FLAGS 1	/* initialize flags */
53224ba2bdSOllivier Robert #define CRYPTO_CONF_PRIV  2	/* load private key from file */
54224ba2bdSOllivier Robert #define CRYPTO_CONF_PUBL  3	/* load public key from file */
55224ba2bdSOllivier Robert #define CRYPTO_CONF_DH    4	/* load Diffie_Hellman pars from file */
56224ba2bdSOllivier Robert #define CRYPTO_CONF_LEAP  5	/* load leapsecond table */
57224ba2bdSOllivier Robert #define CRYPTO_CONF_KEYS  6	/* set keys directory path */
58224ba2bdSOllivier Robert #define CRYPTO_CONF_CERT  7	/* load PKI certificate from file */
59224ba2bdSOllivier Robert #endif /* PUBKEY */
60224ba2bdSOllivier Robert 
61224ba2bdSOllivier Robert /*
62224ba2bdSOllivier Robert  * Function prototypes
63224ba2bdSOllivier Robert  */
64224ba2bdSOllivier Robert extern	void	crypto_recv	P((struct peer *, struct recvbuf *));
65224ba2bdSOllivier Robert extern	int	crypto_xmit	P((u_int32 *, int, u_int, keyid_t,
66224ba2bdSOllivier Robert 				    u_int));
67224ba2bdSOllivier Robert extern	keyid_t	session_key	P((struct sockaddr_in *, struct
68224ba2bdSOllivier Robert 				    sockaddr_in *, keyid_t, keyid_t,
69224ba2bdSOllivier Robert 				    u_long));
70224ba2bdSOllivier Robert extern	void	make_keylist	P((struct peer *, struct interface *));
71224ba2bdSOllivier Robert extern	void	key_expire	P((struct peer *));
72224ba2bdSOllivier Robert extern	void	crypto_agree	P((void));
73224ba2bdSOllivier Robert #ifdef PUBKEY
74224ba2bdSOllivier Robert extern	void	crypto_config	P((int, char *));
75224ba2bdSOllivier Robert extern	void	crypto_setup	P((void));
76224ba2bdSOllivier Robert extern	int	crypto_public	P((struct peer *, u_char *, u_int));
77224ba2bdSOllivier Robert #endif /* PUBKEY */
78224ba2bdSOllivier Robert 
79224ba2bdSOllivier Robert /*
80224ba2bdSOllivier Robert  * Cryptographic values
81224ba2bdSOllivier Robert  */
82224ba2bdSOllivier Robert extern	u_int	crypto_flags;	/* status word */
83224ba2bdSOllivier Robert #ifdef PUBKEY
84224ba2bdSOllivier Robert extern	R_DH_PARAMS dh_params;
85224ba2bdSOllivier Robert extern	struct value host;	/* host name/public key */
86224ba2bdSOllivier Robert extern	struct value certif;	/* certificate */
87224ba2bdSOllivier Robert extern	struct value dhparam;	/* agreement parameters */
88224ba2bdSOllivier Robert extern	struct value dhpub;	/* public value */
89224ba2bdSOllivier Robert extern	struct value tai_leap;	/* leapseconds table */
90224ba2bdSOllivier Robert extern	u_int	crypto_flags;	/* status word */
91224ba2bdSOllivier Robert extern	u_int	sys_tai;	/* current UTC offset from TAI */
92224ba2bdSOllivier Robert #endif /* PUBKEY */
93224ba2bdSOllivier Robert #endif /* AUTOKEY */
94