|
@@ -34,9 +34,9 @@ typedef mbedtls_md_context_t *HMAC_CTX;
|
|
|
#define HMAC_setup(ctx, key, len) ctx = malloc(sizeof(mbedtls_md_context_t)); mbedtls_md_init(ctx); \
|
|
|
mbedtls_md_setup(ctx, mbedtls_md_info_from_type(MBEDTLS_MD_SHA256), 1); \
|
|
|
mbedtls_md_hmac_starts(ctx, (const unsigned char *)key, len)
|
|
|
-#define HMAC_crunch(ctx, buf, len) mbedtls_md_hmac_update(ctx, buf, len)
|
|
|
-#define HMAC_finish(ctx, dig, dlen) dlen = SHA256_DIGEST_LENGTH; mbedtls_md_hmac_finish(ctx, dig)
|
|
|
-#define HMAC_close(ctx) mbedtls_md_free(ctx); free(ctx); ctx = NULL
|
|
|
+#define HMAC_crunch(ctx, buf, len) mbedtls_md_hmac_update(ctx, buf, len)
|
|
|
+#define HMAC_finish(ctx, dig) mbedtls_md_hmac_finish(ctx, dig)
|
|
|
+#define HMAC_close(ctx) mbedtls_md_free(ctx); free(ctx); ctx = NULL
|
|
|
|
|
|
typedef mbedtls_arc4_context* RC4_handle;
|
|
|
#define RC4_alloc(h) *h = malloc(sizeof(mbedtls_arc4_context)); mbedtls_arc4_init(*h)
|
|
@@ -54,7 +54,7 @@ typedef mbedtls_arc4_context* RC4_handle;
|
|
|
#define HMAC_CTX sha2_context
|
|
|
#define HMAC_setup(ctx, key, len) sha2_hmac_starts(&ctx, (unsigned char *)key, len, 0)
|
|
|
#define HMAC_crunch(ctx, buf, len) sha2_hmac_update(&ctx, buf, len)
|
|
|
-#define HMAC_finish(ctx, dig, dlen) dlen = SHA256_DIGEST_LENGTH; sha2_hmac_finish(&ctx, dig)
|
|
|
+#define HMAC_finish(ctx, dig) sha2_hmac_finish(&ctx, dig)
|
|
|
|
|
|
typedef arc4_context * RC4_handle;
|
|
|
#define RC4_alloc(h) *h = malloc(sizeof(arc4_context))
|
|
@@ -73,7 +73,7 @@ typedef arc4_context * RC4_handle;
|
|
|
#define HMAC_CTX struct hmac_sha256_ctx
|
|
|
#define HMAC_setup(ctx, key, len) hmac_sha256_set_key(&ctx, len, key)
|
|
|
#define HMAC_crunch(ctx, buf, len) hmac_sha256_update(&ctx, len, buf)
|
|
|
-#define HMAC_finish(ctx, dig, dlen) dlen = SHA256_DIGEST_LENGTH; hmac_sha256_digest(&ctx, SHA256_DIGEST_LENGTH, dig)
|
|
|
+#define HMAC_finish(ctx, dig) hmac_sha256_digest(&ctx, SHA256_DIGEST_LENGTH, dig)
|
|
|
#define HMAC_close(ctx)
|
|
|
|
|
|
typedef struct arcfour_ctx* RC4_handle;
|
|
@@ -92,7 +92,7 @@ typedef struct arcfour_ctx* RC4_handle;
|
|
|
#endif
|
|
|
#define HMAC_setup(ctx, key, len) HMAC_CTX_init(&ctx); HMAC_Init_ex(&ctx, key, len, EVP_sha256(), 0)
|
|
|
#define HMAC_crunch(ctx, buf, len) HMAC_Update(&ctx, buf, len)
|
|
|
-#define HMAC_finish(ctx, dig, dlen) HMAC_Final(&ctx, dig, &dlen); HMAC_CTX_cleanup(&ctx)
|
|
|
+#define HMAC_finish(ctx, dig, len) HMAC_Final(&ctx, dig, &len); HMAC_CTX_cleanup(&ctx)
|
|
|
|
|
|
typedef RC4_KEY * RC4_handle;
|
|
|
#define RC4_alloc(h) *h = malloc(sizeof(RC4_KEY))
|
|
@@ -139,7 +139,9 @@ static void InitRC4Encryption
|
|
|
uint8_t * pubKeyOut, RC4_handle *rc4keyIn, RC4_handle *rc4keyOut)
|
|
|
{
|
|
|
uint8_t digest[SHA256_DIGEST_LENGTH];
|
|
|
+#if !(defined(USE_MBEDTLS) || defined(USE_POLARSSL) || defined(USE_GNUTLS))
|
|
|
unsigned int digestLen = 0;
|
|
|
+#endif
|
|
|
HMAC_CTX ctx;
|
|
|
|
|
|
RC4_alloc(rc4keyIn);
|
|
@@ -147,7 +149,11 @@ static void InitRC4Encryption
|
|
|
|
|
|
HMAC_setup(ctx, secretKey, 128);
|
|
|
HMAC_crunch(ctx, pubKeyIn, 128);
|
|
|
+#if defined(USE_MBEDTLS) || defined(USE_POLARSSL) || defined(USE_GNUTLS)
|
|
|
+ HMAC_finish(ctx, digest);
|
|
|
+#else
|
|
|
HMAC_finish(ctx, digest, digestLen);
|
|
|
+#endif
|
|
|
|
|
|
RTMP_Log(RTMP_LOGDEBUG, "RC4 Out Key: ");
|
|
|
RTMP_LogHex(RTMP_LOGDEBUG, digest, 16);
|
|
@@ -156,7 +162,11 @@ static void InitRC4Encryption
|
|
|
|
|
|
HMAC_setup(ctx, secretKey, 128);
|
|
|
HMAC_crunch(ctx, pubKeyOut, 128);
|
|
|
+#if defined(USE_MBEDTLS) || defined(USE_POLARSSL) || defined(USE_GNUTLS)
|
|
|
+ HMAC_finish(ctx, digest);
|
|
|
+#else
|
|
|
HMAC_finish(ctx, digest, digestLen);
|
|
|
+#endif
|
|
|
|
|
|
RTMP_Log(RTMP_LOGDEBUG, "RC4 In Key: ");
|
|
|
RTMP_LogHex(RTMP_LOGDEBUG, digest, 16);
|
|
@@ -303,7 +313,13 @@ HMACsha256(const uint8_t *message, size_t messageLen, const uint8_t *key,
|
|
|
|
|
|
HMAC_setup(ctx, key, keylen);
|
|
|
HMAC_crunch(ctx, message, messageLen);
|
|
|
+
|
|
|
+#if defined(USE_MBEDTLS) || defined(USE_POLARSSL) || defined(USE_GNUTLS)
|
|
|
+ digestLen = SHA256_DIGEST_LENGTH;
|
|
|
+ HMAC_finish(ctx, digest);
|
|
|
+#else
|
|
|
HMAC_finish(ctx, digest, digestLen);
|
|
|
+#endif
|
|
|
|
|
|
assert(digestLen == 32);
|
|
|
}
|