ffmpeg / libavutil / des.h @ 5ce6934e
History  View  Annotate  Download (1.72 KB)
1 
/*


2 
* DES encryption/decryption

3 
* Copyright (c) 2007 Reimar Doeffinger

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 021101301 USA

20 
*/

21  
22 
#ifndef AVUTIL_DES_H

23 
#define AVUTIL_DES_H

24  
25 
#include <stdint.h> 
26  
27 
struct AVDES {

28 
uint64_t round_keys[3][16]; 
29 
int triple_des;

30 
}; 
31  
32 
/**

33 
* \brief Initializes an AVDES context.

34 
*

35 
* \param key_bits must be 64 or 192

36 
* \param decrypt 0 for encryption, 1 for decryption

37 
*/

38 
int av_des_init(struct AVDES *d, const uint8_t *key, int key_bits, int decrypt); 
39  
40 
/**

41 
* \brief Encrypts / decrypts using the DES algorithm.

42 
*

43 
* \param count number of 8 byte blocks

44 
* \param dst destination array, can be equal to src, must be 8byte aligned

45 
* \param src source array, can be equal to dst, must be 8byte aligned, may be NULL

46 
* \param iv initialization vector for CBC mode, if NULL then ECB will be used,

47 
* must be 8byte aligned

48 
* \param decrypt 0 for encryption, 1 for decryption

49 
*/

50 
void av_des_crypt(struct AVDES *d, uint8_t *dst, const uint8_t *src, int count, uint8_t *iv, int decrypt); 
51  
52 
#endif /* AVUTIL_DES_H */ 