FFmpeg
sha512.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2007 Michael Niedermayer <michaelni@gmx.at>
3  * Copyright (C) 2013 James Almer <jamrial@gmail.com>
4  *
5  * This file is part of FFmpeg.
6  *
7  * FFmpeg is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU Lesser General Public
9  * License as published by the Free Software Foundation; either
10  * version 2.1 of the License, or (at your option) any later version.
11  *
12  * FFmpeg is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15  * Lesser General Public License for more details.
16  *
17  * You should have received a copy of the GNU Lesser General Public
18  * License along with FFmpeg; if not, write to the Free Software
19  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20  */
21 
22 /**
23  * @file
24  * @ingroup lavu_sha512
25  * Public header for SHA-512 implementation.
26  */
27 
28 #ifndef AVUTIL_SHA512_H
29 #define AVUTIL_SHA512_H
30 
31 #include <stddef.h>
32 #include <stdint.h>
33 
34 #include "attributes.h"
35 #include "version.h"
36 
37 /**
38  * @defgroup lavu_sha512 SHA-512
39  * @ingroup lavu_hash
40  * SHA-512 (Secure Hash Algorithm) hash function implementations.
41  *
42  * This module supports the following SHA-2 hash functions:
43  *
44  * - SHA-512/224: 224 bits
45  * - SHA-512/256: 256 bits
46  * - SHA-384: 384 bits
47  * - SHA-512: 512 bits
48  *
49  * @see For SHA-1, SHA-256, and variants thereof, see @ref lavu_sha.
50  *
51  * @{
52  */
53 
54 extern const int av_sha512_size;
55 
56 struct AVSHA512;
57 
58 /**
59  * Allocate an AVSHA512 context.
60  */
61 struct AVSHA512 *av_sha512_alloc(void);
62 
63 /**
64  * Initialize SHA-2 512 hashing.
65  *
66  * @param context pointer to the function context (of size av_sha512_size)
67  * @param bits number of bits in digest (224, 256, 384 or 512 bits)
68  * @return zero if initialization succeeded, -1 otherwise
69  */
70 int av_sha512_init(struct AVSHA512* context, int bits);
71 
72 /**
73  * Update hash value.
74  *
75  * @param context hash function context
76  * @param data input data to update hash with
77  * @param len input data length
78  */
79 #if FF_API_CRYPTO_SIZE_T
80 void av_sha512_update(struct AVSHA512* context, const uint8_t* data, unsigned int len);
81 #else
82 void av_sha512_update(struct AVSHA512* context, const uint8_t* data, size_t len);
83 #endif
84 
85 /**
86  * Finish hashing and output digest value.
87  *
88  * @param context hash function context
89  * @param digest buffer where output digest value is stored
90  */
91 void av_sha512_final(struct AVSHA512* context, uint8_t *digest);
92 
93 /**
94  * @}
95  */
96 
97 #endif /* AVUTIL_SHA512_H */
ptrdiff_t const GLvoid * data
Definition: opengl_enc.c:100
hash context
Definition: sha512.c:34
Macro definitions for various function/variable attributes.
uint8_t
const int av_sha512_size
Definition: sha512.c:41
struct AVSHA512 * av_sha512_alloc(void)
Allocate an AVSHA512 context.
Definition: sha512.c:43
uint8_t bits
Definition: vp3data.h:202
Libavutil version macros.
void av_sha512_update(struct AVSHA512 *context, const uint8_t *data, unsigned int len)
Update hash value.
Definition: sha512.c:243
int av_sha512_init(struct AVSHA512 *context, int bits)
Initialize SHA-2 512 hashing.
Definition: sha512.c:191
int len
void av_sha512_final(struct AVSHA512 *context, uint8_t *digest)
Finish hashing and output digest value.
Definition: sha512.c:273
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 local context