summaryrefslogtreecommitdiff
path: root/libavutil/rc4.h
diff options
context:
space:
mode:
authorReimar Döffinger <Reimar.Doeffinger@gmx.de>2009-02-03 14:20:55 +0000
committerReimar Döffinger <Reimar.Doeffinger@gmx.de>2009-02-03 14:20:55 +0000
commit1a534c7f1e2cf672bbdd800e229cfe34eb089cc5 (patch)
treeffc41ef97d71600a9f34fd8fc381c2e465cae444 /libavutil/rc4.h
parent88297e80aa005afc4ebdfb4ab68e38a114439905 (diff)
Add and use a public API for RC4 and DES, analogous to the AES API.
Originally committed as revision 16970 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavutil/rc4.h')
-rw-r--r--libavutil/rc4.h24
1 files changed, 23 insertions, 1 deletions
diff --git a/libavutil/rc4.h b/libavutil/rc4.h
index a39dea9cf3..07223a5c9e 100644
--- a/libavutil/rc4.h
+++ b/libavutil/rc4.h
@@ -23,6 +23,28 @@
#include <stdint.h>
-void ff_rc4_enc(const uint8_t *key, int keylen, uint8_t *data, int datalen);
+struct AVRC4 {
+ uint8_t state[256];
+ int x, y;
+};
+
+/**
+ * \brief Initializes an AVRC4 context.
+ *
+ * \param key_bits must be a multiple of 8
+ * \param decrypt 0 for encryption, 1 for decryption, currently has no effect
+ */
+int av_rc4_init(struct AVRC4 *d, const uint8_t *key, int key_bits, int decrypt);
+
+/**
+ * \brief Encrypts / decrypts using the RC4 algorithm.
+ *
+ * \param count number of bytes
+ * \param dst destination array, can be equal to src
+ * \param src source array, can be equal to dst, may be NULL
+ * \param iv not (yet) used for RC4, should be NULL
+ * \param decrypt 0 for encryption, 1 for decryption, not (yet) used
+ */
+void av_rc4_crypt(struct AVRC4 *d, uint8_t *dst, const uint8_t *src, int count, uint8_t *iv, int decrypt);
#endif /* AVUTIL_RC4_H */