xref: /netbsd-src/external/bsd/ntp/dist/include/libssl_compat.h (revision cdfa2a7ef92791ba9db70a584a1d904730e6fb46)
1*cdfa2a7eSchristos /*	$NetBSD: libssl_compat.h,v 1.2 2020/05/25 20:47:19 christos Exp $	*/
2067f5680Schristos 
35645e8e7Schristos /*
45645e8e7Schristos  * libssl_compat.h -- OpenSSL v1.1 compatibility shims
55645e8e7Schristos  *
65645e8e7Schristos  * ---------------------------------------------------------------------
75645e8e7Schristos  *
85645e8e7Schristos  * Written by Juergen Perlinger <perlinger@ntp.org> for the NTP project
95645e8e7Schristos  *
105645e8e7Schristos  * Based on an idea by Kurt Roeckx <kurt@roeckx.be>
115645e8e7Schristos  *
125645e8e7Schristos  * ---------------------------------------------------------------------
135645e8e7Schristos  * This is a clean room implementation of shim functions that have
145645e8e7Schristos  * counterparts in the OpenSSL v1.1 API but not in earlier versions.
155645e8e7Schristos  *
165645e8e7Schristos  * If the OpenSSL version used for compilation needs the shims (that is,
175645e8e7Schristos  * does not provide the new functions) the names of these functions are
185645e8e7Schristos  * redirected to our shims.
195645e8e7Schristos  * ---------------------------------------------------------------------
205645e8e7Schristos  */
215645e8e7Schristos 
225645e8e7Schristos #ifndef NTP_LIBSSL_COMPAT_H
235645e8e7Schristos #define NTP_LIBSSL_COMPAT_H
245645e8e7Schristos 
255645e8e7Schristos #include "openssl/evp.h"
265645e8e7Schristos #include "openssl/dsa.h"
275645e8e7Schristos #include "openssl/rsa.h"
285645e8e7Schristos 
293e3909feSchristos #ifndef OPENSSL_VERSION_NUMBER
303e3909feSchristos #define OPENSSL_VERSION_NUMBER SSLEAY_VERSION_NUMBER
313e3909feSchristos #endif
323e3909feSchristos 
333e3909feSchristos #ifndef OPENSSL_VERSION_TEXT
343e3909feSchristos #define OPENSSL_VERSION_TEXT SSLEAY_VERSION_TEXT
353e3909feSchristos #endif
363e3909feSchristos 
373e3909feSchristos #ifndef OPENSSL_VERSION
383e3909feSchristos #define OPENSSL_VERSION SSLEAY_VERSION
393e3909feSchristos #endif
403e3909feSchristos 
415645e8e7Schristos /* ----------------------------------------------------------------- */
425645e8e7Schristos #if OPENSSL_VERSION_NUMBER < 0x10100000L
435645e8e7Schristos /* ----------------------------------------------------------------- */
445645e8e7Schristos 
455645e8e7Schristos # include <openssl/objects.h>
465645e8e7Schristos # include <openssl/x509.h>
475645e8e7Schristos 
485645e8e7Schristos /* shim the new-style API on an old-style OpenSSL */
495645e8e7Schristos 
505645e8e7Schristos extern BN_GENCB*	sslshimBN_GENCB_new(void);
515645e8e7Schristos extern void		sslshimBN_GENCB_free(BN_GENCB*);
525645e8e7Schristos 
535645e8e7Schristos extern EVP_MD_CTX*	sslshim_EVP_MD_CTX_new(void);
545645e8e7Schristos extern void		sslshim_EVP_MD_CTX_free(EVP_MD_CTX *ctx);
555645e8e7Schristos 
565645e8e7Schristos extern int	sslshim_EVP_PKEY_id(const EVP_PKEY * pkey);
575645e8e7Schristos extern int	sslshim_EVP_PKEY_base_id(const EVP_PKEY * pkey);
585645e8e7Schristos extern RSA*	sslshim_EVP_PKEY_get0_RSA(EVP_PKEY * pkey);
595645e8e7Schristos extern DSA*	sslshim_EVP_PKEY_get0_DSA(EVP_PKEY * pkey);
605645e8e7Schristos 
615645e8e7Schristos extern void	sslshim_RSA_get0_key(const RSA *prsa, const BIGNUM **pn,
625645e8e7Schristos 				     const BIGNUM **pe, const BIGNUM **pd);
635645e8e7Schristos extern int	sslshim_RSA_set0_key(RSA *prsa, BIGNUM *n,
645645e8e7Schristos 				     BIGNUM *e, BIGNUM *d);
655645e8e7Schristos extern void	sslshim_RSA_get0_factors(const RSA *prsa, const BIGNUM **pp,
665645e8e7Schristos 					 const BIGNUM **pq);
675645e8e7Schristos extern int 	sslshim_RSA_set0_factors(RSA *prsar, BIGNUM *p, BIGNUM *q);
685645e8e7Schristos extern int	sslshim_RSA_set0_crt_params(RSA *prsa, BIGNUM *dmp1,
695645e8e7Schristos 					BIGNUM *dmq1, BIGNUM *iqmp);
705645e8e7Schristos 
715645e8e7Schristos extern void	sslshim_DSA_SIG_get0(const DSA_SIG *psig, const BIGNUM **pr,
725645e8e7Schristos 				     const BIGNUM **ps);
735645e8e7Schristos extern int	sslshim_DSA_SIG_set0(DSA_SIG *psig, BIGNUM *r, BIGNUM *s);
745645e8e7Schristos extern void	sslshim_DSA_get0_pqg(const DSA *pdsa, const BIGNUM **pp,
755645e8e7Schristos 				 const BIGNUM **pq, const BIGNUM **pg);
765645e8e7Schristos extern int	sslshim_DSA_set0_pqg(DSA *pdsa, BIGNUM *p, BIGNUM *q, BIGNUM *g);
775645e8e7Schristos extern void	sslshim_DSA_get0_key(const DSA *pdsa, const BIGNUM **ppub_key,
785645e8e7Schristos 				 const BIGNUM **ppriv_key);
795645e8e7Schristos extern int	sslshim_DSA_set0_key(DSA *pdsa, BIGNUM *pub_key,
805645e8e7Schristos 				     BIGNUM *priv_key);
815645e8e7Schristos 
825645e8e7Schristos extern int	sslshim_X509_get_signature_nid(const X509 *x);
835645e8e7Schristos 
845645e8e7Schristos #define	BN_GENCB_new		sslshimBN_GENCB_new
855645e8e7Schristos #define	BN_GENCB_free		sslshimBN_GENCB_free
865645e8e7Schristos 
875645e8e7Schristos #define EVP_MD_CTX_new		sslshim_EVP_MD_CTX_new
885645e8e7Schristos #define EVP_MD_CTX_free		sslshim_EVP_MD_CTX_free
895645e8e7Schristos 
905645e8e7Schristos #define EVP_PKEY_id		sslshim_EVP_PKEY_id
915645e8e7Schristos #define EVP_PKEY_base_id	sslshim_EVP_PKEY_base_id
925645e8e7Schristos #define EVP_PKEY_get0_RSA	sslshim_EVP_PKEY_get0_RSA
935645e8e7Schristos #define EVP_PKEY_get0_DSA	sslshim_EVP_PKEY_get0_DSA
945645e8e7Schristos 
955645e8e7Schristos #define RSA_get0_key		sslshim_RSA_get0_key
965645e8e7Schristos #define RSA_set0_key		sslshim_RSA_set0_key
975645e8e7Schristos #define RSA_get0_factors	sslshim_RSA_get0_factors
985645e8e7Schristos #define RSA_set0_factors	sslshim_RSA_set0_factors
995645e8e7Schristos #define RSA_set0_crt_params	sslshim_RSA_set0_crt_params
1005645e8e7Schristos 
1015645e8e7Schristos #define DSA_SIG_get0		sslshim_DSA_SIG_get0
1025645e8e7Schristos #define DSA_SIG_set0		sslshim_DSA_SIG_set0
1035645e8e7Schristos #define DSA_get0_pqg		sslshim_DSA_get0_pqg
1045645e8e7Schristos #define DSA_set0_pqg		sslshim_DSA_set0_pqg
1055645e8e7Schristos #define DSA_get0_key		sslshim_DSA_get0_key
1065645e8e7Schristos #define DSA_set0_key		sslshim_DSA_set0_key
1075645e8e7Schristos 
1085645e8e7Schristos #define X509_get_signature_nid	sslshim_X509_get_signature_nid
1095645e8e7Schristos 
1103e3909feSchristos #define OpenSSL_version_num	SSLeay
1113e3909feSchristos #define OpenSSL_version		SSLeay_version
1123e3909feSchristos #define X509_get0_notBefore	X509_get_notBefore
1133e3909feSchristos #define X509_getm_notBefore	X509_get_notBefore
1143e3909feSchristos #define X509_get0_notAfter	X509_get_notAfter
1153e3909feSchristos #define X509_getm_notAfter	X509_get_notAfter
1163e3909feSchristos 
1175645e8e7Schristos /* ----------------------------------------------------------------- */
1185645e8e7Schristos #endif /* OPENSSL_VERSION_NUMBER < v1.1.0 */
1195645e8e7Schristos /* ----------------------------------------------------------------- */
1205645e8e7Schristos 
1215645e8e7Schristos #endif /* NTP_LIBSSL_COMPAT_H */
122