/* * Copyright 2014 The WebRTC project authors. All Rights Reserved. * * Use of this source code is governed by a BSD-style license * that can be found in the LICENSE file in the root of the source * tree. An additional intellectual property rights grant can be found * in the file PATENTS. All contributing project authors may * be found in the AUTHORS file in the root of the source tree.
*/
#include"pc/external_hmac.h"
#include <stdlib.h> // For malloc/free. #include <string.h>
staticconst srtp_auth_test_case_t kExternalHmacTestCase0 = {
20, // Octets in key const_cast<uint8_t*>(kExternalHmacTestCase0Key), // Key
8, // Octets in data const_cast<uint8_t*>(kExternalHmacTestCase0Data), // Data
10, // Octets in tag const_cast<uint8_t*>(kExternalHmacFakeTag), // Tag
NULL // Pointer to next // testcase
};
srtp_err_status_t external_hmac_alloc(srtp_auth_t** a, int key_len, int out_len) {
uint8_t* pointer;
// Check key length - note that we don't support keys larger // than 20 bytes yet if (key_len > 20) return srtp_err_status_bad_param;
// Check output length - should be less than 20 bytes/ if (out_len > 20) return srtp_err_status_bad_param;
// Allocate memory for auth and hmac_ctx_t structures.
pointer = new uint8_t[(sizeof(ExternalHmacContext) + sizeof(srtp_auth_t))]; if (pointer == NULL) return srtp_err_status_alloc_fail;
// Set pointers
*a = reinterpret_cast<srtp_auth_t*>(pointer); // `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<srtp_auth_type_t*>(&external_hmac);
(*a)->state = pointer + sizeof(srtp_auth_t);
(*a)->out_len = out_len;
(*a)->key_len = key_len;
(*a)->prefix_len = 0;
return srtp_err_status_ok;
}
srtp_err_status_t external_hmac_dealloc(srtp_auth_t* a) {
rtc::ExplicitZeroMemory(a, sizeof(ExternalHmacContext) + sizeof(srtp_auth_t));
// Free memory delete[] a;
return srtp_err_status_ok;
}
srtp_err_status_t external_hmac_init(void* state, const uint8_t* key, int key_len) { if (key_len > HMAC_KEY_LENGTH) return srtp_err_status_bad_param;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.