代码拉取完成,页面将自动刷新
/*
* RTMP network protocol
* Copyright (c) 2009 Konstantin Shishkov
*
* This file is part of FFmpeg.
*
* FFmpeg is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* FFmpeg is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with FFmpeg; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
/**
* @file
* RTMP protocol digest
*/
#include <stdint.h>
#include "libavutil/error.h"
#include "libavutil/hmac.h"
#include "rtmp.h"
int ff_rtmp_calc_digest(const uint8_t *src, int len, int gap,
const uint8_t *key, int keylen, uint8_t *dst)
{
AVHMAC *hmac;
hmac = av_hmac_alloc(AV_HMAC_SHA256);
if (!hmac)
return AVERROR(ENOMEM);
av_hmac_init(hmac, key, keylen);
if (gap <= 0) {
av_hmac_update(hmac, src, len);
} else { //skip 32 bytes used for storing digest
av_hmac_update(hmac, src, gap);
av_hmac_update(hmac, src + gap + 32, len - gap - 32);
}
av_hmac_final(hmac, dst, 32);
av_hmac_free(hmac);
return 0;
}
int ff_rtmp_calc_digest_pos(const uint8_t *buf, int off, int mod_val,
int add_val)
{
int i, digest_pos = 0;
for (i = 0; i < 4; i++)
digest_pos += buf[i + off];
digest_pos = digest_pos % mod_val + add_val;
return digest_pos;
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。