FFmpeg
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
Examples
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
libavutil
blowfish.h
Go to the documentation of this file.
1
/*
2
* Blowfish algorithm
3
* Copyright (c) 2012 Samuel Pitoiset
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_BLOWFISH_H
23
#define AVUTIL_BLOWFISH_H
24
25
#include <stdint.h>
26
27
/**
28
* @defgroup lavu_blowfish Blowfish
29
* @ingroup lavu_crypto
30
* @{
31
*/
32
33
#define AV_BF_ROUNDS 16
34
35
typedef
struct
AVBlowfish
{
36
uint32_t
p
[
AV_BF_ROUNDS
+ 2];
37
uint32_t
s
[4][256];
38
}
AVBlowfish
;
39
40
/**
41
* Initialize an AVBlowfish context.
42
*
43
* @param ctx an AVBlowfish context
44
* @param key a key
45
* @param key_len length of the key
46
*/
47
void
av_blowfish_init
(
struct
AVBlowfish
*ctx,
const
uint8_t
*key,
int
key_len);
48
49
/**
50
* Encrypt or decrypt a buffer using a previously initialized context.
51
*
52
* @param ctx an AVBlowfish context
53
* @param xl left four bytes halves of input to be encrypted
54
* @param xr right four bytes halves of input to be encrypted
55
* @param decrypt 0 for encryption, 1 for decryption
56
*/
57
void
av_blowfish_crypt_ecb
(
struct
AVBlowfish
*ctx, uint32_t *xl, uint32_t *xr,
58
int
decrypt);
59
60
/**
61
* Encrypt or decrypt a buffer using a previously initialized context.
62
*
63
* @param ctx an AVBlowfish context
64
* @param dst destination array, can be equal to src
65
* @param src source array, can be equal to dst
66
* @param count number of 8 byte blocks
67
* @param iv initialization vector for CBC mode, if NULL ECB will be used
68
* @param decrypt 0 for encryption, 1 for decryption
69
*/
70
void
av_blowfish_crypt
(
struct
AVBlowfish
*ctx,
uint8_t
*dst,
const
uint8_t
*
src
,
71
int
count
,
uint8_t
*iv,
int
decrypt);
72
73
/**
74
* @}
75
*/
76
77
#endif
/* AVUTIL_BLOWFISH_H */
Generated on Sun Mar 23 2014 23:50:14 for FFmpeg by
1.8.2