提交 0508faaa 编写于 作者: M Martin Storsjö

rtmpdh: Pass the actual buffer size of the output secret key

Signed-off-by: NMartin Storsjö <martin@martin.st>
上级 9f1b3050
...@@ -163,7 +163,7 @@ int ff_rtmpe_compute_secret_key(URLContext *h, const uint8_t *serverdata, ...@@ -163,7 +163,7 @@ int ff_rtmpe_compute_secret_key(URLContext *h, const uint8_t *serverdata,
/* compute the shared secret secret in order to compute RC4 keys */ /* compute the shared secret secret in order to compute RC4 keys */
if ((ret = ff_dh_compute_shared_secret_key(rt->dh, serverdata + server_pos, if ((ret = ff_dh_compute_shared_secret_key(rt->dh, serverdata + server_pos,
128, secret_key)) < 0) 128, secret_key, sizeof(secret_key))) < 0)
return ret; return ret;
/* set output key */ /* set output key */
......
...@@ -313,7 +313,8 @@ int ff_dh_write_public_key(FF_DH *dh, uint8_t *pub_key, int pub_key_len) ...@@ -313,7 +313,8 @@ int ff_dh_write_public_key(FF_DH *dh, uint8_t *pub_key, int pub_key_len)
} }
int ff_dh_compute_shared_secret_key(FF_DH *dh, const uint8_t *pub_key, int ff_dh_compute_shared_secret_key(FF_DH *dh, const uint8_t *pub_key,
int pub_key_len, uint8_t *secret_key) int pub_key_len, uint8_t *secret_key,
int secret_key_len)
{ {
FFBigNum q1 = NULL, pub_key_bn = NULL; FFBigNum q1 = NULL, pub_key_bn = NULL;
int ret; int ret;
...@@ -333,7 +334,7 @@ int ff_dh_compute_shared_secret_key(FF_DH *dh, const uint8_t *pub_key, ...@@ -333,7 +334,7 @@ int ff_dh_compute_shared_secret_key(FF_DH *dh, const uint8_t *pub_key,
/* when the public key is valid we have to compute the shared secret key */ /* when the public key is valid we have to compute the shared secret key */
if ((ret = dh_is_valid_public_key(pub_key_bn, dh->p, q1)) < 0) { if ((ret = dh_is_valid_public_key(pub_key_bn, dh->p, q1)) < 0) {
goto fail; goto fail;
} else if ((ret = dh_compute_key(dh, pub_key_bn, pub_key_len, } else if ((ret = dh_compute_key(dh, pub_key_bn, secret_key_len,
secret_key)) < 0) { secret_key)) < 0) {
ret = AVERROR(EINVAL); ret = AVERROR(EINVAL);
goto fail; goto fail;
......
...@@ -92,11 +92,13 @@ int ff_dh_write_public_key(FF_DH *dh, uint8_t *pub_key, int pub_key_len); ...@@ -92,11 +92,13 @@ int ff_dh_write_public_key(FF_DH *dh, uint8_t *pub_key, int pub_key_len);
* *
* @param dh a Diffie-Hellmann context, containing the private key * @param dh a Diffie-Hellmann context, containing the private key
* @param pub_key the buffer containing the public key * @param pub_key the buffer containing the public key
* @param pub_key_len the length of the buffer * @param pub_key_len the length of the public key buffer
* @param secret_key the buffer where the secret key is written * @param secret_key the buffer where the secret key is written
* @param secret_key_len the length of the secret key buffer
* @return length of the shared secret key on success, negative value otherwise * @return length of the shared secret key on success, negative value otherwise
*/ */
int ff_dh_compute_shared_secret_key(FF_DH *dh, const uint8_t *pub_key, int ff_dh_compute_shared_secret_key(FF_DH *dh, const uint8_t *pub_key,
int pub_key_len, uint8_t *secret_key); int pub_key_len, uint8_t *secret_key,
int secret_key_len);
#endif /* AVFORMAT_RTMPDH_H */ #endif /* AVFORMAT_RTMPDH_H */
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册