35 lines
1.3 KiB
Diff
35 lines
1.3 KiB
Diff
diff --git a/google3/third_party/libsrtp/crypto/cipher/aes_icm.c b/google3/third_party/libsrtp/crypto/cipher/aes_icm.c
|
|
index d333899..45714c0 100644
|
|
--- a/google3/third_party/libsrtp/crypto/cipher/aes_icm.c
|
|
+++ b/google3/third_party/libsrtp/crypto/cipher/aes_icm.c
|
|
@@ -164,18 +164,20 @@ aes_icm_dealloc(cipher_t *c) {
|
|
err_status_t
|
|
aes_icm_context_init(aes_icm_ctx_t *c, const uint8_t *key) {
|
|
v128_t tmp_key;
|
|
+ int i;
|
|
|
|
/* set counter and initial values to 'offset' value */
|
|
/* FIX!!! this assumes the salt is at key + 16, and thus that the */
|
|
- /* FIX!!! cipher key length is 16! Also note this copies past the
|
|
- end of the 'key' array by 2 bytes! */
|
|
- v128_copy_octet_string(&c->counter, key + 16);
|
|
- v128_copy_octet_string(&c->offset, key + 16);
|
|
+ /* FIX!!! cipher key length is 16! */
|
|
+ for (i = 0; i < 14; i++) {
|
|
+ c->counter.v8[i] = key[16 + i];
|
|
+ c->offset.v8[i] = key[16 + i];
|
|
+ }
|
|
|
|
/* force last two octets of the offset to zero (for srtp compatibility) */
|
|
c->offset.v8[14] = c->offset.v8[15] = 0;
|
|
c->counter.v8[14] = c->counter.v8[15] = 0;
|
|
-
|
|
+
|
|
/* set tmp_key (for alignment) */
|
|
v128_copy_octet_string(&tmp_key, key);
|
|
|
|
@@ -508,4 +510,3 @@ cipher_type_t aes_icm = {
|
|
(cipher_test_case_t *) &aes_icm_test_case_0,
|
|
(debug_module_t *) &mod_aes_icm
|
|
};
|
|
-
|