annotate rc4.h @ 992:a13125b5be3a libavutil

bswap: change ME to NE in macro names Other parts of FFmpeg use NE (native endian) rather than ME (machine). This makes it consistent.
author mru
date Sat, 10 Jul 2010 22:09:01 +0000
parents 67fb0b442dd2
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
387
ac27ad42f37f Add standard license header.
diego
parents: 384
diff changeset
1 /*
ac27ad42f37f Add standard license header.
diego
parents: 384
diff changeset
2 * RC4 encryption/decryption/pseudo-random number generator
ac27ad42f37f Add standard license header.
diego
parents: 384
diff changeset
3 *
ac27ad42f37f Add standard license header.
diego
parents: 384
diff changeset
4 * This file is part of FFmpeg.
ac27ad42f37f Add standard license header.
diego
parents: 384
diff changeset
5 *
ac27ad42f37f Add standard license header.
diego
parents: 384
diff changeset
6 * FFmpeg is free software; you can redistribute it and/or
ac27ad42f37f Add standard license header.
diego
parents: 384
diff changeset
7 * modify it under the terms of the GNU Lesser General Public
ac27ad42f37f Add standard license header.
diego
parents: 384
diff changeset
8 * License as published by the Free Software Foundation; either
ac27ad42f37f Add standard license header.
diego
parents: 384
diff changeset
9 * version 2.1 of the License, or (at your option) any later version.
ac27ad42f37f Add standard license header.
diego
parents: 384
diff changeset
10 *
ac27ad42f37f Add standard license header.
diego
parents: 384
diff changeset
11 * FFmpeg is distributed in the hope that it will be useful,
ac27ad42f37f Add standard license header.
diego
parents: 384
diff changeset
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
ac27ad42f37f Add standard license header.
diego
parents: 384
diff changeset
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
ac27ad42f37f Add standard license header.
diego
parents: 384
diff changeset
14 * Lesser General Public License for more details.
ac27ad42f37f Add standard license header.
diego
parents: 384
diff changeset
15 *
ac27ad42f37f Add standard license header.
diego
parents: 384
diff changeset
16 * You should have received a copy of the GNU Lesser General Public
ac27ad42f37f Add standard license header.
diego
parents: 384
diff changeset
17 * License along with FFmpeg; if not, write to the Free Software
ac27ad42f37f Add standard license header.
diego
parents: 384
diff changeset
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
ac27ad42f37f Add standard license header.
diego
parents: 384
diff changeset
19 */
ac27ad42f37f Add standard license header.
diego
parents: 384
diff changeset
20
567
bd4052d9050c Globally rename the header inclusion guard names.
stefano
parents: 470
diff changeset
21 #ifndef AVUTIL_RC4_H
bd4052d9050c Globally rename the header inclusion guard names.
stefano
parents: 470
diff changeset
22 #define AVUTIL_RC4_H
388
6ac8f69fc208 Add multiple inclusion guards.
diego
parents: 387
diff changeset
23
470
542bb0b45624 #include stdint.h instead of inttypes.h like all libavutil headers do.
diego
parents: 405
diff changeset
24 #include <stdint.h>
405
bc871e7ac0dc Add missing #includes to fix 'make checkheaders'.
diego
parents: 392
diff changeset
25
647
67fb0b442dd2 Add and use a public API for RC4 and DES, analogous to the AES API.
reimar
parents: 567
diff changeset
26 struct AVRC4 {
67fb0b442dd2 Add and use a public API for RC4 and DES, analogous to the AES API.
reimar
parents: 567
diff changeset
27 uint8_t state[256];
67fb0b442dd2 Add and use a public API for RC4 and DES, analogous to the AES API.
reimar
parents: 567
diff changeset
28 int x, y;
67fb0b442dd2 Add and use a public API for RC4 and DES, analogous to the AES API.
reimar
parents: 567
diff changeset
29 };
67fb0b442dd2 Add and use a public API for RC4 and DES, analogous to the AES API.
reimar
parents: 567
diff changeset
30
67fb0b442dd2 Add and use a public API for RC4 and DES, analogous to the AES API.
reimar
parents: 567
diff changeset
31 /**
67fb0b442dd2 Add and use a public API for RC4 and DES, analogous to the AES API.
reimar
parents: 567
diff changeset
32 * \brief Initializes an AVRC4 context.
67fb0b442dd2 Add and use a public API for RC4 and DES, analogous to the AES API.
reimar
parents: 567
diff changeset
33 *
67fb0b442dd2 Add and use a public API for RC4 and DES, analogous to the AES API.
reimar
parents: 567
diff changeset
34 * \param key_bits must be a multiple of 8
67fb0b442dd2 Add and use a public API for RC4 and DES, analogous to the AES API.
reimar
parents: 567
diff changeset
35 * \param decrypt 0 for encryption, 1 for decryption, currently has no effect
67fb0b442dd2 Add and use a public API for RC4 and DES, analogous to the AES API.
reimar
parents: 567
diff changeset
36 */
67fb0b442dd2 Add and use a public API for RC4 and DES, analogous to the AES API.
reimar
parents: 567
diff changeset
37 int av_rc4_init(struct AVRC4 *d, const uint8_t *key, int key_bits, int decrypt);
67fb0b442dd2 Add and use a public API for RC4 and DES, analogous to the AES API.
reimar
parents: 567
diff changeset
38
67fb0b442dd2 Add and use a public API for RC4 and DES, analogous to the AES API.
reimar
parents: 567
diff changeset
39 /**
67fb0b442dd2 Add and use a public API for RC4 and DES, analogous to the AES API.
reimar
parents: 567
diff changeset
40 * \brief Encrypts / decrypts using the RC4 algorithm.
67fb0b442dd2 Add and use a public API for RC4 and DES, analogous to the AES API.
reimar
parents: 567
diff changeset
41 *
67fb0b442dd2 Add and use a public API for RC4 and DES, analogous to the AES API.
reimar
parents: 567
diff changeset
42 * \param count number of bytes
67fb0b442dd2 Add and use a public API for RC4 and DES, analogous to the AES API.
reimar
parents: 567
diff changeset
43 * \param dst destination array, can be equal to src
67fb0b442dd2 Add and use a public API for RC4 and DES, analogous to the AES API.
reimar
parents: 567
diff changeset
44 * \param src source array, can be equal to dst, may be NULL
67fb0b442dd2 Add and use a public API for RC4 and DES, analogous to the AES API.
reimar
parents: 567
diff changeset
45 * \param iv not (yet) used for RC4, should be NULL
67fb0b442dd2 Add and use a public API for RC4 and DES, analogous to the AES API.
reimar
parents: 567
diff changeset
46 * \param decrypt 0 for encryption, 1 for decryption, not (yet) used
67fb0b442dd2 Add and use a public API for RC4 and DES, analogous to the AES API.
reimar
parents: 567
diff changeset
47 */
67fb0b442dd2 Add and use a public API for RC4 and DES, analogous to the AES API.
reimar
parents: 567
diff changeset
48 void av_rc4_crypt(struct AVRC4 *d, uint8_t *dst, const uint8_t *src, int count, uint8_t *iv, int decrypt);
388
6ac8f69fc208 Add multiple inclusion guards.
diego
parents: 387
diff changeset
49
567
bd4052d9050c Globally rename the header inclusion guard names.
stefano
parents: 470
diff changeset
50 #endif /* AVUTIL_RC4_H */