From 8b61011b6f4508237df7c825d6ba82c5dc5846f6 Mon Sep 17 00:00:00 2001 From: "henrike@webrtc.org" Date: Tue, 18 Mar 2014 21:39:10 +0000 Subject: [PATCH] (Auto)update libjingle 63293120-> 63352036 git-svn-id: http://webrtc.googlecode.com/svn/trunk@5720 4adac7df-926f-26a2-2b94-8c16560cd09d --- talk/session/media/externalhmac.cc | 128 +++++++++++++---------------- talk/session/media/externalhmac.h | 32 ++++---- 2 files changed, 72 insertions(+), 88 deletions(-) diff --git a/talk/session/media/externalhmac.cc b/talk/session/media/externalhmac.cc index c640e2565..470668d76 100644 --- a/talk/session/media/externalhmac.cc +++ b/talk/session/media/externalhmac.cc @@ -39,45 +39,53 @@ #include "talk/base/logging.h" -// The debug module for authentiation -debug_module_t mod_external_hmac = { - 0, // Debugging is off by default - (char*)"external-hmac-sha-1" // Printable name for module -}; - -extern auth_type_t external_hmac; - // Begin test case 0 */ -uint8_t -external_hmac_test_case_0_key[20] = { +static const uint8_t kExternalHmacTestCase0Key[20] = { 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b }; -uint8_t -external_hmac_test_case_0_data[8] = { +static const uint8_t kExternalHmacTestCase0Data[8] = { 0x48, 0x69, 0x20, 0x54, 0x68, 0x65, 0x72, 0x65 // "Hi There" }; -uint8_t -external_hmac_fake_tag[10] = { +static const uint8_t kExternalHmacFakeTag[10] = { 0xba, 0xdd, 0xba, 0xdd, 0xba, 0xdd, 0xba, 0xdd, 0xba, 0xdd }; -auth_test_case_t -external_hmac_test_case_0 = { - 20, // Octets in key - external_hmac_test_case_0_key, // Key - 8, // Octets in data - external_hmac_test_case_0_data, // Data - 10, // Octets in tag - external_hmac_fake_tag, // Tag - NULL // Pointer to next testcase +static const auth_test_case_t kExternalHmacTestCase0 = { + 20, // Octets in key + const_cast(kExternalHmacTestCase0Key), // Key + 8, // Octets in data + const_cast(kExternalHmacTestCase0Data), // Data + 10, // Octets in tag + const_cast(kExternalHmacFakeTag), // Tag + NULL // Pointer to next + // testcase }; -err_status_t -external_hmac_alloc(auth_t** a, int key_len, int out_len) { +static const char kExternalHmacDescription[] = + "external hmac sha-1 authentication"; + +// auth_type_t external_hmac is the hmac metaobject + +static const auth_type_t external_hmac = { + external_hmac_alloc, + external_hmac_dealloc, + (auth_init_func) external_hmac_init, + (auth_compute_func) external_hmac_compute, + (auth_update_func) external_hmac_update, + (auth_start_func) external_hmac_start, + const_cast(kExternalHmacDescription), + 0, // Instance count. + const_cast(&kExternalHmacTestCase0), + NULL, // No debugging module. + EXTERNAL_HMAC_SHA1 +}; + + +err_status_t external_hmac_alloc(auth_t** a, int key_len, int out_len) { uint8_t* pointer; // Check key length - note that we don't support keys larger @@ -90,42 +98,37 @@ external_hmac_alloc(auth_t** a, int key_len, int out_len) { return err_status_bad_param; // Allocate memory for auth and hmac_ctx_t structures. - pointer = reinterpret_cast( - malloc(sizeof(external_hmac_ctx_t) + sizeof(auth_t))); + pointer = new uint8_t[(sizeof(external_hmac_ctx_t) + sizeof(auth_t))]; if (pointer == NULL) return err_status_alloc_fail; // Set pointers *a = (auth_t *)pointer; - (*a)->type = &external_hmac; + // |external_hmac| is const and libsrtp expects |type| to be non-const. + // const conversion is required. |external_hmac| is constant because we don't + // want to increase global count in Chrome. + (*a)->type = const_cast(&external_hmac); (*a)->state = pointer + sizeof(auth_t); (*a)->out_len = out_len; (*a)->key_len = key_len; (*a)->prefix_len = 0; - // Increment global count of all hmac uses. - external_hmac.ref_count++; - return err_status_ok; } -err_status_t -external_hmac_dealloc(auth_t* a) { +err_status_t external_hmac_dealloc(auth_t* a) { // Zeroize entire state memset((uint8_t *)a, 0, sizeof(external_hmac_ctx_t) + sizeof(auth_t)); // Free memory - free(a); - - // Decrement global count of all hmac uses. - external_hmac.ref_count--; + delete[] a; return err_status_ok; } -err_status_t -external_hmac_init(external_hmac_ctx_t* state, - const uint8_t* key, int key_len) { +err_status_t external_hmac_init(external_hmac_ctx_t* state, + const uint8_t* key, + int key_len) { if (key_len > HMAC_KEY_LENGTH) return err_status_bad_param; @@ -135,47 +138,30 @@ external_hmac_init(external_hmac_ctx_t* state, return err_status_ok; } -err_status_t -external_hmac_start(external_hmac_ctx_t* state) { +err_status_t external_hmac_start(external_hmac_ctx_t* state) { return err_status_ok; } -err_status_t -external_hmac_update(external_hmac_ctx_t* state, const uint8_t* message, - int msg_octets) { +err_status_t external_hmac_update(external_hmac_ctx_t* state, + const uint8_t* message, + int msg_octets) { return err_status_ok; } -err_status_t -external_hmac_compute(external_hmac_ctx_t* state, const void* message, - int msg_octets, int tag_len, uint8_t* result) { - memcpy(result, external_hmac_fake_tag, tag_len); +err_status_t external_hmac_compute(external_hmac_ctx_t* state, + const void* message, + int msg_octets, + int tag_len, + uint8_t* result) { + memcpy(result, kExternalHmacFakeTag, tag_len); return err_status_ok; } -char external_hmac_description[] = "external hmac sha-1 authentication"; - - // auth_type_t external_hmac is the hmac metaobject - -auth_type_t -external_hmac = { - (auth_alloc_func) external_hmac_alloc, - (auth_dealloc_func) external_hmac_dealloc, - (auth_init_func) external_hmac_init, - (auth_compute_func) external_hmac_compute, - (auth_update_func) external_hmac_update, - (auth_start_func) external_hmac_start, - (char *) external_hmac_description, - (int) 0, /* instance count */ - (auth_test_case_t *) &external_hmac_test_case_0, - (debug_module_t *) &mod_external_hmac, - (auth_type_id_t) EXTERNAL_HMAC_SHA1 -}; - -err_status_t -external_crypto_init() { +err_status_t external_crypto_init() { + // |external_hmac| is const. const_cast is required as libsrtp expects + // non-const. err_status_t status = crypto_kernel_replace_auth_type( - &external_hmac, EXTERNAL_HMAC_SHA1); + const_cast(&external_hmac), EXTERNAL_HMAC_SHA1); if (status) { LOG(LS_ERROR) << "Error in replacing default auth module, error: " << status; diff --git a/talk/session/media/externalhmac.h b/talk/session/media/externalhmac.h index 62a660c92..287d9680a 100644 --- a/talk/session/media/externalhmac.h +++ b/talk/session/media/externalhmac.h @@ -64,29 +64,27 @@ typedef struct { int key_length; } external_hmac_ctx_t; -err_status_t -external_hmac_alloc(auth_t** a, int key_len, int out_len); +err_status_t external_hmac_alloc(auth_t** a, int key_len, int out_len); -err_status_t -external_hmac_dealloc(auth_t* a); +err_status_t external_hmac_dealloc(auth_t* a); -err_status_t -external_hmac_init(external_hmac_ctx_t* state, - const uint8_t* key, int key_len); +err_status_t external_hmac_init(external_hmac_ctx_t* state, + const uint8_t* key, + int key_len); -err_status_t -external_hmac_start(external_hmac_ctx_t* state); +err_status_t external_hmac_start(external_hmac_ctx_t* state); -err_status_t -external_hmac_update(external_hmac_ctx_t* state, const uint8_t* message, - int msg_octets); +err_status_t external_hmac_update(external_hmac_ctx_t* state, + const uint8_t* message, + int msg_octets); -err_status_t -external_hmac_compute(external_hmac_ctx_t* state, const void* message, - int msg_octets, int tag_len, uint8_t* result); +err_status_t external_hmac_compute(external_hmac_ctx_t* state, + const void* message, + int msg_octets, + int tag_len, + uint8_t* result); -err_status_t -external_crypto_init(); +err_status_t external_crypto_init(); #endif // defined(HAVE_SRTP) && defined(ENABLE_EXTERNAL_AUTH) #endif // TALK_SESSION_MEDIA_EXTERNAL_HMAC_H_