1 --- librtmp/hashswf.c.orig 2016-02-29 01:15:13 UTC
4 #define SHA256_DIGEST_LENGTH 32
6 #define HMAC_CTX sha2_context
7 -#define HMAC_setup(ctx, key, len) sha2_hmac_starts(&ctx, (unsigned char *)key, len, 0)
8 -#define HMAC_crunch(ctx, buf, len) sha2_hmac_update(&ctx, buf, len)
9 -#define HMAC_finish(ctx, dig, dlen) dlen = SHA256_DIGEST_LENGTH; sha2_hmac_finish(&ctx, dig)
10 -#define HMAC_close(ctx)
11 +#define HMAC_setup(ctx, key, len) do { \
13 + ctx = calloc(1, sizeof(*ctx)); \
14 + sha2_hmac_starts(ctx, (unsigned char *)key, len, 0); \
16 +#define HMAC_crunch(ctx, buf, len) sha2_hmac_update(ctx, buf, len)
17 +#define HMAC_finish(ctx, dig, dlen) dlen = SHA256_DIGEST_LENGTH; sha2_hmac_finish(ctx, dig)
18 +#define HMAC_close(ctx) do { \
22 #elif defined(USE_GNUTLS)
23 #include <nettle/hmac.h>
24 #ifndef SHA256_DIGEST_LENGTH
28 #define HMAC_CTX struct hmac_sha256_ctx
29 -#define HMAC_setup(ctx, key, len) hmac_sha256_set_key(&ctx, len, key)
30 -#define HMAC_crunch(ctx, buf, len) hmac_sha256_update(&ctx, len, buf)
31 -#define HMAC_finish(ctx, dig, dlen) dlen = SHA256_DIGEST_LENGTH; hmac_sha256_digest(&ctx, SHA256_DIGEST_LENGTH, dig)
32 -#define HMAC_close(ctx)
33 +#define HMAC_setup(ctx, key, len) do { \
35 + ctx = calloc(1, sizeof(*ctx)); \
36 + hmac_sha256_set_key(ctx, len, key); \
38 +#define HMAC_crunch(ctx, buf, len) hmac_sha256_update(ctx, len, buf)
39 +#define HMAC_finish(ctx, dig, dlen) dlen = SHA256_DIGEST_LENGTH; hmac_sha256_digest(ctx, SHA256_DIGEST_LENGTH, dig)
40 +#define HMAC_close(ctx) do { \
44 #else /* USE_OPENSSL */
45 #include <openssl/ssl.h>
46 #include <openssl/sha.h>
47 #include <openssl/hmac.h>
48 #include <openssl/rc4.h>
49 -#define HMAC_setup(ctx, key, len) HMAC_CTX_init(&ctx); HMAC_Init_ex(&ctx, (unsigned char *)key, len, EVP_sha256(), 0)
50 -#define HMAC_crunch(ctx, buf, len) HMAC_Update(&ctx, (unsigned char *)buf, len)
51 -#define HMAC_finish(ctx, dig, dlen) HMAC_Final(&ctx, (unsigned char *)dig, &dlen);
52 -#define HMAC_close(ctx) HMAC_CTX_cleanup(&ctx)
53 +#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
54 +#define HMAC_setup(ctx, key, len) do { \
56 + ctx = calloc(1, sizeof(*ctx)); \
57 + HMAC_CTX_init(ctx); \
58 + HMAC_Init_ex(ctx, (unsigned char *)key, len, EVP_sha256(), 0); \
61 +#define HMAC_setup(ctx, key, len) do { \
63 + ctx = HMAC_CTX_new(); \
64 + HMAC_Init_ex(ctx, (unsigned char *)key, len, EVP_sha256(), 0); \
67 +#define HMAC_crunch(ctx, buf, len) HMAC_Update(ctx, (unsigned char *)buf, len)
68 +#define HMAC_finish(ctx, dig, dlen) HMAC_Final(ctx, (unsigned char *)dig, &dlen);
69 +#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
70 +#define HMAC_close(ctx) do { \
71 + HMAC_CTX_cleanup(ctx); \
76 +#define HMAC_close(ctx) do { \
77 + HMAC_CTX_reset(ctx); \
78 + HMAC_CTX_free(ctx); \
84 extern void RTMP_TLS_Init();
85 @@ -289,7 +328,7 @@ leave: