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)
63 struct _gl_ctx { _gl_CTX CTX; };
67 #define md5_prefix MD5
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
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() _init_ctx(struct _gl_ctx *ctx)
#define OPENSSL_FN(suffix)
GL_OPENSSL_INLINE void *GL_CRYPTO_FN() _buffer(const char *buf, size_t len, void *restrict res)
#define GL_OPENSSL_INLINE
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)
GL_OPENSSL_INLINE void GL_CRYPTO_FN() _process_block(const void *buf, size_t len, struct _gl_ctx *ctx)
#define _GL_INLINE_HEADER_BEGIN
#define GL_CRYPTO_FN(suffix)
#define _GL_INLINE_HEADER_END