Home | History | Annotate | Download | only in libavutil
      1 /*
      2  * Copyright (C) 2007 Michael Niedermayer <michaelni (at) gmx.at>
      3  * Copyright (C) 2013 James Almer <jamrial (at) 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 #ifndef AVUTIL_SHA512_H
     23 #define AVUTIL_SHA512_H
     24 
     25 #include <stdint.h>
     26 
     27 #include "attributes.h"
     28 #include "version.h"
     29 
     30 /**
     31  * @defgroup lavu_sha512 SHA512
     32  * @ingroup lavu_crypto
     33  * @{
     34  */
     35 
     36 extern const int av_sha512_size;
     37 
     38 struct AVSHA512;
     39 
     40 /**
     41  * Allocate an AVSHA512 context.
     42  */
     43 struct AVSHA512 *av_sha512_alloc(void);
     44 
     45 /**
     46  * Initialize SHA-2 512 hashing.
     47  *
     48  * @param context pointer to the function context (of size av_sha512_size)
     49  * @param bits    number of bits in digest (224, 256, 384 or 512 bits)
     50  * @return        zero if initialization succeeded, -1 otherwise
     51  */
     52 int av_sha512_init(struct AVSHA512* context, int bits);
     53 
     54 /**
     55  * Update hash value.
     56  *
     57  * @param context hash function context
     58  * @param data    input data to update hash with
     59  * @param len     input data length
     60  */
     61 void av_sha512_update(struct AVSHA512* context, const uint8_t* data, unsigned int len);
     62 
     63 /**
     64  * Finish hashing and output digest value.
     65  *
     66  * @param context hash function context
     67  * @param digest  buffer where output digest value is stored
     68  */
     69 void av_sha512_final(struct AVSHA512* context, uint8_t *digest);
     70 
     71 /**
     72  * @}
     73  */
     74 
     75 #endif /* AVUTIL_SHA512_H */
     76