FFmpeg
sha.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2007 Michael Niedermayer <michaelni@gmx.at>
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 /**
22  * @file
23  * @ingroup lavu_sha
24  * Public header for SHA-1 & SHA-256 hash function implementations.
25  */
26 
27 #ifndef AVUTIL_SHA_H
28 #define AVUTIL_SHA_H
29 
30 #include <stddef.h>
31 #include <stdint.h>
32 
33 #include "attributes.h"
34 #include "version.h"
35 
36 /**
37  * @defgroup lavu_sha SHA
38  * @ingroup lavu_hash
39  * SHA-1 and SHA-256 (Secure Hash Algorithm) hash function implementations.
40  *
41  * This module supports the following SHA hash functions:
42  *
43  * - SHA-1: 160 bits
44  * - SHA-224: 224 bits, as a variant of SHA-2
45  * - SHA-256: 256 bits, as a variant of SHA-2
46  *
47  * @see For SHA-384, SHA-512, and variants thereof, see @ref lavu_sha512.
48  *
49  * @{
50  */
51 
52 extern const int av_sha_size;
53 
54 struct AVSHA;
55 
56 /**
57  * Allocate an AVSHA context.
58  */
59 struct AVSHA *av_sha_alloc(void);
60 
61 /**
62  * Initialize SHA-1 or SHA-2 hashing.
63  *
64  * @param context pointer to the function context (of size av_sha_size)
65  * @param bits number of bits in digest (SHA-1 - 160 bits, SHA-2 224 or 256 bits)
66  * @return zero if initialization succeeded, -1 otherwise
67  */
68 int av_sha_init(struct AVSHA* context, int bits);
69 
70 /**
71  * Update hash value.
72  *
73  * @param ctx hash function context
74  * @param data input data to update hash with
75  * @param len input data length
76  */
77 #if FF_API_CRYPTO_SIZE_T
78 void av_sha_update(struct AVSHA *ctx, const uint8_t *data, unsigned int len);
79 #else
80 void av_sha_update(struct AVSHA *ctx, const uint8_t *data, size_t len);
81 #endif
82 
83 /**
84  * Finish hashing and output digest value.
85  *
86  * @param context hash function context
87  * @param digest buffer where output digest value is stored
88  */
89 void av_sha_final(struct AVSHA* context, uint8_t *digest);
90 
91 /**
92  * @}
93  */
94 
95 #endif /* AVUTIL_SHA_H */
av_sha_init
int av_sha_init(struct AVSHA *context, int bits)
Initialize SHA-1 or SHA-2 hashing.
Definition: sha.c:273
data
const char data[16]
Definition: mxf.c:91
bits
uint8_t bits
Definition: vp3data.h:202
ctx
AVFormatContext * ctx
Definition: movenc.c:48
av_sha_final
void av_sha_final(struct AVSHA *context, uint8_t *digest)
Finish hashing and output digest value.
Definition: sha.c:345
context
it s the only field you need to keep assuming you have a context There is some magic you don t need to care about around this just let it vf default minimum maximum flags name is the option keep it simple and lowercase description are in without and describe what they for example set the foo of the bar offset is the offset of the field in your context
Definition: writing_filters.txt:91
av_sha_size
const int av_sha_size
Definition: sha.c:43
av_sha_update
void av_sha_update(struct AVSHA *ctx, const uint8_t *data, unsigned int len)
Update hash value.
Definition: sha.c:315
attributes.h
av_sha_alloc
struct AVSHA * av_sha_alloc(void)
Allocate an AVSHA context.
Definition: sha.c:45
uint8_t
uint8_t
Definition: audio_convert.c:194
len
int len
Definition: vorbis_enc_data.h:452
AVSHA
hash context
Definition: sha.c:34
version.h