On 19/07/15 6:08 PM, Vesselin Bontchev wrote: > diff --git a/libavutil/tea.h b/libavutil/tea.h > new file mode 100644 > index 0000000..1db6987 > --- /dev/null > +++ b/libavutil/tea.h > @@ -0,0 +1,66 @@ > +/* > + * A 32-bit implementation of the TEA algorithm > + * Copyright (c) 2015 Vesselin Bontchev > + * > + * This file is part of FFmpeg. > + * > + * FFmpeg is free software; you can redistribute it and/or > + * modify it under the terms of the GNU Lesser General Public > + * License as published by the Free Software Foundation; either > + * version 2.1 of the License, or (at your option) any later version. > + * > + * FFmpeg is distributed in the hope that it will be useful, > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > + * Lesser General Public License for more details. > + * > + * You should have received a copy of the GNU Lesser General Public > + * License along with FFmpeg; if not, write to the Free Software > + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 > USA > + */ > + > +#ifndef AVUTIL_TEA_H > +#define AVUTIL_TEA_H > + > +#include <stdint.h> > + > +/** > + * @file > + * @brief Public header for libavutil TEA algorithm > + * @defgroup lavu_tea TEA > + * @ingroup lavu_crypto > + * @{ > + */ > + > +typedef struct AVTEA { > + uint32_t key[16]; > + int rounds; > +} AVTEA;
This should be in the c file, and an av_tea_alloc() function and av_camellia_size constant added. See how other cyphers do it (AES, Camellia, Cast, etc). Also, you should add a FATE test that runs the test code (can be done in a separate patch). > + > +/** > + * Initialize an AVTEA context. > + * > + * @param ctx an AVTEA context > + * @param key a key of 16 bytes used for encryption/decryption > + * @param rounds the number of rounds in TEA (64 is the "standard") > + */ > +void av_tea_init(struct AVTEA *ctx, const uint8_t key[16], int rounds); > + > +/** > + * Encrypt or decrypt a buffer using a previously initialized context. > + * > + * @param ctx an AVTEA context > + * @param dst destination array, can be equal to src > + * @param src source array, can be equal to dst > + * @param count number of 8 byte blocks > + * @param iv initialization vector for CBC mode, if NULL then ECB will be > used > + * @param decrypt 0 for encryption, 1 for decryption > + */ > +void av_tea_crypt(struct AVTEA *ctx, uint8_t *dst, const uint8_t *src, > + int count, uint8_t *iv, int decrypt); > + > +/** > + * @} > + */ > + > +#endif /* AVUTIL_TEA_H */ > -- 1.7.10.4 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel