[FFmpeg-devel] [PATCH 4/4] des: add av_des_alloc()
James Almer
jamrial at gmail.com
Fri Jul 31 19:18:10 CEST 2015
Signed-off-by: James Almer <jamrial at gmail.com>
---
doc/APIchanges | 1 +
libavutil/des.c | 13 ++++++++++++-
libavutil/des.h | 24 ++++++++++++++++++++++--
3 files changed, 35 insertions(+), 3 deletions(-)
diff --git a/doc/APIchanges b/doc/APIchanges
index 7d1984f..cce2ddb 100644
--- a/doc/APIchanges
+++ b/doc/APIchanges
@@ -19,6 +19,7 @@ API changes, most recent first:
xxxxxxx - Add av_blowfish_alloc().
xxxxxxx - Add av_rc4_alloc().
xxxxxxx - Add av_xtea_alloc().
+ xxxxxxx - Add av_des_alloc().
2015-xx-xx - lavc 56.35.0 - avcodec.h
xxxxxxxxx - Rename CODEC_FLAG* defines to AV_CODEC_FLAG*.
diff --git a/libavutil/des.c b/libavutil/des.c
index 57ad0a4..e7e9178 100644
--- a/libavutil/des.c
+++ b/libavutil/des.c
@@ -22,9 +22,15 @@
#include "avutil.h"
#include "common.h"
#include "intreadwrite.h"
+#include "mem.h"
#include "des.h"
-typedef struct AVDES AVDES;
+#if !FF_API_CRYPTO_CONTEXT
+struct AVDES {
+ uint64_t round_keys[3][16];
+ int triple_des;
+};
+#endif
#define T(a, b, c, d, e, f, g, h) 64-a,64-b,64-c,64-d,64-e,64-f,64-g,64-h
static const uint8_t IP_shuffle[] = {
@@ -286,6 +292,11 @@ static uint64_t des_encdec(uint64_t in, uint64_t K[16], int decrypt) {
return in;
}
+AVDES *av_des_alloc(void)
+{
+ return av_mallocz(sizeof(struct AVDES));
+}
+
int av_des_init(AVDES *d, const uint8_t *key, int key_bits, av_unused int decrypt) {
if (key_bits != 64 && key_bits != 192)
return -1;
diff --git a/libavutil/des.h b/libavutil/des.h
index 2feb046..224745e 100644
--- a/libavutil/des.h
+++ b/libavutil/des.h
@@ -24,16 +24,32 @@
#include <stdint.h>
-struct AVDES {
+/**
+ * @defgroup lavu_des DES
+ * @ingroup lavu_crypto
+ * @{
+ */
+
+#if FF_API_CRYPTO_CONTEXT
+typedef struct AVDES {
uint64_t round_keys[3][16];
int triple_des;
-};
+} AVDES;
+#else
+typedef struct AVDES AVDES;
+#endif
+
+/**
+ * Allocate an AVDES context.
+ */
+AVDES *av_des_alloc(void);
/**
* @brief Initializes an AVDES context.
*
* @param key_bits must be 64 or 192
* @param decrypt 0 for encryption/CBC-MAC, 1 for decryption
+ * @return zero on success, negative value otherwise
*/
int av_des_init(struct AVDES *d, const uint8_t *key, int key_bits, int decrypt);
@@ -58,4 +74,8 @@ void av_des_crypt(struct AVDES *d, uint8_t *dst, const uint8_t *src, int count,
*/
void av_des_mac(struct AVDES *d, uint8_t *dst, const uint8_t *src, int count);
+/**
+ * @}
+ */
+
#endif /* AVUTIL_DES_H */
--
2.5.0
More information about the ffmpeg-devel
mailing list