|
|
|
@ -113,6 +113,7 @@ struct mp_crypto_context { |
|
|
|
unsigned char session_salt[14]; |
|
|
|
unsigned char session_auth_key[20]; |
|
|
|
u_int32_t roc; |
|
|
|
struct crypto_cipher *tfm; |
|
|
|
}; |
|
|
|
|
|
|
|
struct mediaproxy_target { |
|
|
|
@ -361,6 +362,11 @@ static void target_push(struct mediaproxy_target *t) { |
|
|
|
|
|
|
|
DBG("Freeing target\n"); |
|
|
|
|
|
|
|
if (t->decrypt.tfm) |
|
|
|
crypto_free_cipher(t->decrypt.tfm); |
|
|
|
if (t->encrypt.tfm) |
|
|
|
crypto_free_cipher(t->encrypt.tfm); |
|
|
|
|
|
|
|
kfree(t); |
|
|
|
} |
|
|
|
|
|
|
|
@ -967,6 +973,14 @@ static int gen_session_keys(struct mp_crypto_context *c, struct mediaproxy_srtp |
|
|
|
if (ret) |
|
|
|
return ret; |
|
|
|
|
|
|
|
c->tfm = crypto_alloc_cipher("aes", 0, CRYPTO_ALG_ASYNC); |
|
|
|
if (IS_ERR(c->tfm)) { |
|
|
|
ret = PTR_ERR(c->tfm); |
|
|
|
c->tfm = NULL; |
|
|
|
return ret; |
|
|
|
} |
|
|
|
crypto_cipher_setkey(c->tfm, c->session_key, 16); |
|
|
|
|
|
|
|
DBG("master key %02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x\n", |
|
|
|
s->master_key[0], s->master_key[1], s->master_key[2], s->master_key[3], |
|
|
|
s->master_key[4], s->master_key[5], s->master_key[6], s->master_key[7], |
|
|
|
|