20#ifndef GL_OPENSSL_NAME
21# error "Please define GL_OPENSSL_NAME to 1,5,256 etc."
24#ifndef _GL_INLINE_HEADER_BEGIN
25# error "Please include config.h first."
28#ifndef GL_OPENSSL_INLINE
29# define GL_OPENSSL_INLINE _GL_INLINE
33#define _GLCRYPTO_CONCAT_(prefix, suffix) prefix##suffix
34#define _GLCRYPTO_CONCAT(prefix, suffix) _GLCRYPTO_CONCAT_ (prefix, suffix)
36#if GL_OPENSSL_NAME == 5
37# define OPENSSL_ALG md5
39# define OPENSSL_ALG _GLCRYPTO_CONCAT (sha, GL_OPENSSL_NAME)
43#if BASE_OPENSSL_TYPE != GL_OPENSSL_NAME
44# undef BASE_OPENSSL_TYPE
45# if GL_OPENSSL_NAME == 224
46# define BASE_OPENSSL_TYPE 256
47# elif GL_OPENSSL_NAME == 384
48# define BASE_OPENSSL_TYPE 512
50# define md5_CTX MD5_CTX
51# define sha1_CTX SHA_CTX
52# define sha224_CTX SHA256_CTX
53# define sha224_ctx sha256_ctx
54# define sha256_CTX SHA256_CTX
55# define sha384_CTX SHA512_CTX
56# define sha384_ctx sha512_ctx
57# define sha512_CTX SHA512_CTX
60# define _gl_CTX _GLCRYPTO_CONCAT (OPENSSL_ALG, _CTX)
61# define _gl_ctx _GLCRYPTO_CONCAT (OPENSSL_ALG, _ctx)
63struct _gl_ctx { _gl_CTX CTX; };
68#define sha1_prefix SHA1
69#define sha224_prefix SHA224
70#define sha256_prefix SHA256
71#define sha384_prefix SHA384
72#define sha512_prefix SHA512
73#define _GLCRYPTO_PREFIX _GLCRYPTO_CONCAT (OPENSSL_ALG, _prefix)
74#define OPENSSL_FN(suffix) _GLCRYPTO_CONCAT (_GLCRYPTO_PREFIX, suffix)
75#define GL_CRYPTO_FN(suffix) _GLCRYPTO_CONCAT (OPENSSL_ALG, suffix)
79{ (void)
OPENSSL_FN (_Init) ((_gl_CTX *) ctx); }
82#if ! (GL_OPENSSL_NAME == 224 || GL_OPENSSL_NAME == 384)
85{
OPENSSL_FN (_Update) ((_gl_CTX *) ctx, buf, len); }
94{
OPENSSL_FN (_Final) ((
unsigned char *) res, (_gl_CTX *) ctx);
return res; }
98{
return OPENSSL_FN () ((
const unsigned char *) buf, len, (
unsigned char *) res); }
104 _gl_CTX tmp_ctx = *(_gl_CTX *) ctx;
105 OPENSSL_FN (_Final) ((
unsigned char *) res, &tmp_ctx);
112#undef _GLCRYPTO_PREFIX
114#undef GL_OPENSSL_NAME
#define _GL_INLINE_HEADER_BEGIN
#define _GL_INLINE_HEADER_END
#define OPENSSL_FN(suffix)
GL_OPENSSL_INLINE void GL_CRYPTO_FN() _process_block(const void *buf, size_t len, struct _gl_ctx *ctx)
#define GL_OPENSSL_INLINE
#define GL_CRYPTO_FN(suffix)
GL_OPENSSL_INLINE void GL_CRYPTO_FN() _init_ctx(struct _gl_ctx *ctx)
GL_OPENSSL_INLINE void GL_CRYPTO_FN() _process_bytes(const void *buf, size_t len, struct _gl_ctx *ctx)
GL_OPENSSL_INLINE void *GL_CRYPTO_FN() _buffer(const char *buf, size_t len, void *restrict res)
GL_OPENSSL_INLINE void *GL_CRYPTO_FN() _read_ctx(const struct _gl_ctx *ctx, void *restrict res)
GL_OPENSSL_INLINE void *GL_CRYPTO_FN() _finish_ctx(struct _gl_ctx *ctx, void *restrict res)