精子发黄是什么原因| 什么啤酒度数高| 四月初八是什么日子| 男鼠配什么生肖最好| 平衡是什么意思| 亵渎什么意思| 家的意义是什么| 空气净化器什么牌子好| 腐女是什么意思| 胃糜烂是什么原因引起的| 甲鱼补什么| 焦虑是什么| 今天什么时候下雨| 痰多咳嗽是什么原因| 北京市长属于什么级别| 汗疱疹涂什么药膏| wpw综合症是什么意思| rm是什么位置| 肝脏钙化灶是什么意思| 伊朗用什么语言| 观音菩萨什么生肖| 腊肠炒什么好吃| 有痰是什么原因| 男生下巴长痘痘是什么原因| 头疼吃什么药最有效| 佛光普照什么意思| 梅五行属什么| 料油是什么油| 血液病是什么| 舌苔白厚有齿痕是什么原因| 多巴胺高是什么原因| 有氧运动是什么意思| IB是什么| 胃疼想吐是什么原因| 白话文是什么意思| 山水有相逢是什么意思| lol锤石什么时候出的| hp感染是什么意思| 手抖是什么原因导致的| 阴虚是什么| 静脉曲张挂号挂什么科| 手指上的月牙代表什么| 吃什么补精| 撒丫子是什么意思| 心静自然凉是什么意思| 甲钴胺片有什么副作用| 兰花象征着什么| 脚臭是什么原因| 乳白色是什么颜色| 手上长毛是什么原因| 送什么礼物好| 什么是弱视| 子宫什么样子图片| 卵泡刺激素高说明什么| 霸王硬上弓什么意思| 老是打嗝是什么病的征兆| 什么叫自慰| 什么叫近视| 月经期能吃什么水果| 儿童感冒挂什么科| icu什么意思| 天天吃玉米有什么好处和坏处| 头孢有什么用| 银行卡销户是什么意思| 免漆板是什么板材| 侍寝是什么意思| 计数是什么意思| 前列腺炎吃什么药最好| pcl是什么材料| 养心吃什么| 月经结束一周后又出血是什么原因| 打灰是什么意思| 举足轻重是什么意思| 什么是冤亲债主| 月子里可以吃什么水果| 肺气肿是什么症状| 白细胞减少有什么症状| 望穿秋水是什么意思| aqua是什么牌子| 鼻炎会引起什么症状| 吃饱了胃胀是什么原因| 爱放屁是什么原因| 裂帛是什么意思| 人为什么会死亡| 腊月是什么星座| 养老金什么时候可以领取| mrmrs是什么牌子| 窦性心律左室高电压什么意思| 澳大利亚属于什么洲| 什么的香味| 中午吃什么不会胖| 右眼一直跳是什么原因| 什么病需要化疗| id锁是什么| 人的血压一天中什么时候最高| 上火牙龈肿痛吃什么药| od值是什么意思| 为什么会突然吐血| 口臭挂什么科| 绿色和红色混合是什么颜色| 医学生规培是什么意思| 筋膜刀是什么| 大腿内侧发黑是什么原因| 康宽杀虫剂能杀什么虫| 恶对什么| 62年属什么生肖| 去肝火喝什么茶| 泡脚出汗有什么好处| 嗓子干痒吃什么药效果好| 嘬是什么意思| 拔了智齿需要注意什么| 总胆固醇低是什么原因| 孕早期吃什么有利于胎心胎芽发育| 胃不舒服想吐是什么原因| 什么粉底液最好用| 飞蚊症是什么症状| 菠萝蜜是什么季节的水果| 上海话娘娘是什么意思| prn是什么医嘱| 梦见拖地是什么意思| pet一ct是一种什么检查| 意难平是什么意思| 心脏早搏吃什么药好| 血小板是干什么用的| 喉咙有痰咳嗽是什么原因| AD是什么意思啊| 椰子煲汤放什么材料| 1996属鼠的是什么命| 尿酸高不能吃什么| 螺蛳粉为什么那么臭| bc什么意思| 规律宫缩是什么感觉| 庸人自扰什么意思| 第二名叫什么| 减肥可以吃什么肉| 祸不及家人前一句是什么| coach什么意思| 先天性心脏病最怕什么| 什么症状吃柏子养心丸| 蚊虫叮咬用什么药膏| 真丝丝绒是什么面料| 多囊卵巢综合征吃什么药| 花胶是什么东西| 吃完饭恶心是什么原因| 排尿困难吃什么药好| 手机代表什么生肖| 什么是中性洗涤剂| 西装革履什么意思| 又什么又什么的花| 为什么新生儿有胎记| 乳液是什么| 1025是什么星座| 感冒反复发烧是什么原因引起的| 纳纹女装属于什么档次| 喘不上来气是什么原因| 幼儿急疹为什么不能碰水| 黄鼠狼进屋是什么兆头| 配子是什么| 玫瑰茄和洛神花有什么区别吗| 为什么半夜流鼻血| 什么言什么色| 办理护照需要什么材料| 奥莱是什么牌子| 怀孕查雌二醇什么作用| 看血管挂什么科| 甘油三脂高是什么意思| 女人适合喝什么茶最好| 计提工资是什么意思| 口腔溃疡吃什么中成药| 利巴韦林是什么药| 扁豆长什么样子图片| 月桂酰两性基乙酸钠是什么| 佛跳墙属于什么菜系| slow什么意思| 今年26岁属什么生肖| 什么是结膜炎| 女生额头长痘痘是什么原因| 三重一大是什么内容| 喇叭裤配什么上衣| 俄罗斯被称为什么| 孕妇吃红枣对胎儿有什么好处| 无偿献血有什么待遇| 天蝎后面是什么星座| 绿头牌是什么意思| 频繁大便是什么原因| 子宫肌瘤伴钙化是什么意思| 梦见去墓地是什么预兆| 对视是什么意思| 神经衰弱吃什么药效果最好| 什么是炎症| 耳朵烧是什么原因| 十一月十一号是什么星座| 肠镜检查前需要做什么准备工作| moi是什么意思| 生化有什么症状和反应| 睡觉手麻木是什么原因| 吉星高照是什么生肖| 打扰是什么意思| 大脚趾头疼是什么原因| 高颜值是什么意思| 为什么不一样| 梦见月经血是什么预兆| 什么时候立夏| 吃西瓜不能吃什么| 龙眼树上的臭虫叫什么| 吃什么食物对头发好| 自身免疫性肝病是什么意思| 血小板低是什么意思| 蒙昧是什么意思| 儿童过敏性鼻炎吃什么药好| 曹操属什么生肖| 绝眼是什么原因引起的| 晚上8点半是什么时辰| 出水痘能吃什么食物| 美女如云什么意思| 明火是什么意思| fnh是什么病| 才高八斗什么意思| 代沟是什么意思| 戍怎么读音是什么| 里正是什么官| 为什么脸上总是出油| 婴儿胎发什么时候剪最好| 亚甲炎是什么病| 总放屁还特别臭是什么原因| 什么水果可以美白| 甲钴胺有什么作用| 有容乃大是什么意思| 拔牙挂什么科| 令尹是什么官职| 艾草有什么功效| 至死不渝下一句是什么| 星字五行属什么| 生长激素分泌的高峰期是什么时候| 刚怀孕需要注意什么| 0到3个月的婴儿惊吓吃什么药| 脉冲什么意思| 清关是什么| 一个车一个罔是什么字| 过境签是什么意思| petct是什么检查| 口腔溃疡吃什么药好得快| 烤麸是什么做的| 舌头溃疡吃什么药最好| 为什么会厌学| 肠澼是什么意思| 钛合金是什么材料| 上大便出血是什么原因| 梦见家里死人了代表什么预兆| 骨折长骨痂有什么反应| 2010年是什么生肖| 红眼病什么症状| 胸闷想吐是什么原因| 舌头有问题应该挂什么科| 吃什么可以解酒| 鱼最喜欢吃什么| 腿水肿是什么原因引起的| 口吐白沫是什么病| 科目三为什么这么难| 农村做什么致富| 嗜睡是什么原因| 海带和什么菜搭配好吃| 出家人不打诳语是什么意思| 怀孕什么时候吃鹅蛋最好| 百度

2017年中国优秀政务平台推荐及综合影响力评估结果通报


Directory: ../../../ffmpeg/
File: src/libavutil/hmac.c
Date: 2025-08-04 00:43:16
Exec Total Coverage
Lines: 101 109 92.7%
Functions: 18 18 100.0%
Branches: 20 25 80.0%

Line Branch Exec Source
1 /*
2 * Copyright (C) 2012 Martin Storsjo
3 *
4 * This file is part of FFmpeg.
5 *
6 * FFmpeg is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
10 *
11 * FFmpeg is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with FFmpeg; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19 */
20
21 #include <stddef.h>
22 #include <stdint.h>
23 #include <string.h>
24
25 #include "attributes.h"
26 #include "error.h"
27 #include "hmac.h"
28 #include "md5.h"
29 #include "sha.h"
30 #include "sha512.h"
31 #include "mem.h"
32
33 #define MAX_HASHLEN 64
34 #define MAX_BLOCKLEN 128
35
36 typedef void (*hmac_final)(void *ctx, uint8_t *dst);
37 typedef void (*hmac_update)(void *ctx, const uint8_t *src, size_t len);
38 typedef void (*hmac_init)(void *ctx);
39
40 struct AVHMAC {
41 void *hash;
42 int blocklen, hashlen;
43 hmac_final final;
44 hmac_update update;
45 hmac_init init;
46 uint8_t key[MAX_BLOCKLEN];
47 int keylen;
48 };
49
50 #define DEFINE_ALGO_BITS_INIT(prefix, bits) \
51 static av_cold void prefix##bits##_init(void *ctx) \
52 { \
53 av_##prefix##_init(ctx, bits); \
54 }
55
56 #define DEFINE_ALGO_INIT(prefix) \
57 static av_cold void prefix##_init(void *ctx) \
58 { \
59 av_##prefix##_init(ctx); \
60 }
61
62 #define DEFINE_ALGO(prefix) \
63 static void prefix##_update(void *ctx, const uint8_t *src, size_t len) \
64 { \
65 av_##prefix##_update(ctx, src, len); \
66 } \
67 static void prefix##_final(void *ctx, uint8_t *dst) \
68 { \
69 av_##prefix##_final(ctx, dst); \
70 }
71
72 12 DEFINE_ALGO_INIT(md5)
73 48 DEFINE_ALGO_BITS_INIT(sha, 160)
74 12 DEFINE_ALGO_BITS_INIT(sha, 224)
75 12 DEFINE_ALGO_BITS_INIT(sha, 256)
76 12 DEFINE_ALGO_BITS_INIT(sha512, 384)
77 12 DEFINE_ALGO_BITS_INIT(sha512, 512)
78 68 DEFINE_ALGO(md5)
79 438 DEFINE_ALGO(sha)
80 136 DEFINE_ALGO(sha512)
81
82 21 AVHMAC *av_hmac_alloc(enum AVHMACType type)
83 {
84 21 AVHMAC *c = av_mallocz(sizeof(*c));
85
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 21 times.
21 if (!c)
86 return NULL;
87
6/7
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 16 times.
✓ Branch 2 taken 1 times.
✓ Branch 3 taken 1 times.
✓ Branch 4 taken 1 times.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
21 switch (type) {
88 1 case AV_HMAC_MD5:
89 1 c->blocklen = 64;
90 1 c->hashlen = 16;
91 1 c->init = md5_init;
92 1 c->update = md5_update;
93 1 c->final = md5_final;
94 1 c->hash = av_md5_alloc();
95 1 break;
96 16 case AV_HMAC_SHA1:
97 16 c->blocklen = 64;
98 16 c->hashlen = 20;
99 16 c->init = sha160_init;
100 16 c->update = sha_update;
101 16 c->final = sha_final;
102 16 c->hash = av_sha_alloc();
103 16 break;
104 1 case AV_HMAC_SHA224:
105 1 c->blocklen = 64;
106 1 c->hashlen = 28;
107 1 c->init = sha224_init;
108 1 c->update = sha_update;
109 1 c->final = sha_final;
110 1 c->hash = av_sha_alloc();
111 1 break;
112 1 case AV_HMAC_SHA256:
113 1 c->blocklen = 64;
114 1 c->hashlen = 32;
115 1 c->init = sha256_init;
116 1 c->update = sha_update;
117 1 c->final = sha_final;
118 1 c->hash = av_sha_alloc();
119 1 break;
120 1 case AV_HMAC_SHA384:
121 1 c->blocklen = 128;
122 1 c->hashlen = 48;
123 1 c->init = sha512384_init;
124 1 c->update = sha512_update;
125 1 c->final = sha512_final;
126 1 c->hash = av_sha512_alloc();
127 1 break;
128 1 case AV_HMAC_SHA512:
129 1 c->blocklen = 128;
130 1 c->hashlen = 64;
131 1 c->init = sha512512_init;
132 1 c->update = sha512_update;
133 1 c->final = sha512_final;
134 1 c->hash = av_sha512_alloc();
135 1 break;
136 default:
137 av_free(c);
138 return NULL;
139 }
140
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 21 times.
21 if (!c->hash) {
141 av_free(c);
142 return NULL;
143 }
144 21 return c;
145 }
146
147 21 void av_hmac_free(AVHMAC *c)
148 {
149
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 21 times.
21 if (!c)
150 return;
151 21 av_freep(&c->hash);
152 21 av_free(c);
153 }
154
155 48 void av_hmac_init(AVHMAC *c, const uint8_t *key, unsigned int keylen)
156 {
157 int i;
158 uint8_t block[MAX_BLOCKLEN];
159
2/2
✓ Branch 0 taken 12 times.
✓ Branch 1 taken 36 times.
48 if (keylen > c->blocklen) {
160 12 c->init(c->hash);
161 12 c->update(c->hash, key, keylen);
162 12 c->final(c->hash, c->key);
163 12 c->keylen = c->hashlen;
164 } else {
165 36 memcpy(c->key, key, keylen);
166 36 c->keylen = keylen;
167 }
168 48 c->init(c->hash);
169
2/2
✓ Branch 0 taken 1032 times.
✓ Branch 1 taken 48 times.
1080 for (i = 0; i < c->keylen; i++)
170 1032 block[i] = c->key[i] ^ 0x36;
171
2/2
✓ Branch 0 taken 2680 times.
✓ Branch 1 taken 48 times.
2728 for (i = c->keylen; i < c->blocklen; i++)
172 2680 block[i] = 0x36;
173 48 c->update(c->hash, block, c->blocklen);
174 48 }
175
176 57 void av_hmac_update(AVHMAC *c, const uint8_t *data, unsigned int len)
177 {
178 57 c->update(c->hash, data, len);
179 57 }
180
181 48 int av_hmac_final(AVHMAC *c, uint8_t *out, unsigned int outlen)
182 {
183 uint8_t block[MAX_BLOCKLEN];
184 int i;
185
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 48 times.
48 if (outlen < c->hashlen)
186 return AVERROR(EINVAL);
187 48 c->final(c->hash, out);
188 48 c->init(c->hash);
189
2/2
✓ Branch 0 taken 1032 times.
✓ Branch 1 taken 48 times.
1080 for (i = 0; i < c->keylen; i++)
190 1032 block[i] = c->key[i] ^ 0x5C;
191
2/2
✓ Branch 0 taken 2680 times.
✓ Branch 1 taken 48 times.
2728 for (i = c->keylen; i < c->blocklen; i++)
192 2680 block[i] = 0x5C;
193 48 c->update(c->hash, block, c->blocklen);
194 48 c->update(c->hash, out, c->hashlen);
195 48 c->final(c->hash, out);
196 48 return c->hashlen;
197 }
198
199 30 int av_hmac_calc(AVHMAC *c, const uint8_t *data, unsigned int len,
200 const uint8_t *key, unsigned int keylen,
201 uint8_t *out, unsigned int outlen)
202 {
203 30 av_hmac_init(c, key, keylen);
204 30 av_hmac_update(c, data, len);
205 30 return av_hmac_final(c, out, outlen);
206 }
207

肿物是什么意思 海明威为什么自杀 榴莲不可以和什么食物一起吃 可乐加味精女人喝了什么效果 紫癜是什么意思
至加秦是什么字 雨水是什么意思 大便潜血弱阳性是什么原因 平板支撑是什么 越来越什么
输血四项检查是什么 气管炎吃什么食物好 耿耿于怀是什么意思 梦见黄鼠狼是什么意思 拔完火罐要注意什么
右边腰疼是什么原因 变蛋吃多了有什么好处和坏处 辅食是什么意思 血性是什么意思 长期手淫会有什么危害
心血管科是看什么病hcv9jop1ns5r.cn 门诊号是什么意思hcv8jop9ns8r.cn 爷爷和孙子是什么关系hcv8jop1ns5r.cn 婴儿呛奶是什么原因引起的xjhesheng.com 皮疹和湿疹有什么区别hcv8jop1ns0r.cn
包皮炎吃什么消炎药hcv7jop6ns8r.cn 胃病吃什么水果好aiwuzhiyu.com 什么首阔步hcv9jop8ns0r.cn 足银999是什么意思hcv7jop5ns6r.cn 水煮鱼一般用什么鱼hcv8jop3ns4r.cn
青梅是什么水果hcv9jop2ns5r.cn 什么鱼不属于发物hcv9jop0ns8r.cn 蚂蚁怕什么helloaicloud.com 老巫婆是什么意思hcv8jop4ns9r.cn 罗贯中和施耐庵是什么关系hcv8jop8ns5r.cn
小便发黄是什么原因引起的hcv8jop5ns1r.cn 女生的隐私部位长什么样cl108k.com 吃饭吧唧嘴有什么说法jiuxinfghf.com 什么情况下需要做造影hcv8jop1ns2r.cn 吴亦凡什么学历hcv8jop7ns4r.cn
百度