⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 crypt_dev.h

📁 一个用于智能手机的多媒体库适合S60 WinCE的跨平台开发库
💻 H
字号:
/* *			GPAC - Multimedia Framework C SDK * *			Copyright (c) Jean Le Feuvre 2000-2005 *					All rights reserved * *  This file is part of GPAC / Crypto Tools sub-project * *  GPAC 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, or (at your option) *  any later version. *    *  GPAC 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 this library; see the file COPYING.  If not, write to *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  * */#ifndef _GF_CRYPT_DEV_H_#define _GF_CRYPT_DEV_H_#ifdef __cplusplusextern "C" {#endif#include <gpac/crypt.h>/*the samllest version of the lib: only AES-128-CTR supported*/#define GPAC_CRYPT_ISMA_ONLY#if !defined(GPAC_CRYPT_ISMA_ONLY) && defined(GPAC_READ_ONLY)#define GPAC_CRYPT_ISMA_ONLY#endiftypedef void (*mcryptfunc)(void*,void*);typedef GF_Err (*mcrypt_setkeystream)(void *, const void *, int, const void *, int);typedef GF_Err (*mcrypt_setkeyblock) (void *, const void *, int);typedef GF_Err (*mcrypt_docrypt) (void *, const void *, int);/*private - do not use*/typedef struct _tag_crypt_stream{	const char *algo_name;	u32 algo_version;	const char *mode_name;	u32 mode_version;	/* Holds the algorithm's internal key */	char *akey;	/* holds the mode's internal buffers */	char *abuf;	/* holds the key */	char *keyword_given;	/*all below are static vars for mode and algo - sizes are in bytes*/	/*modes access*/	GF_Err (*_init_mcrypt) (void *, void *, int, void *, int);	void (*_end_mcrypt) (void *);	GF_Err (*_mcrypt) (void *, void *, int, int, void *, mcryptfunc func, mcryptfunc func2);	GF_Err (*_mdecrypt) (void *, void *, int, int, void *, mcryptfunc func, mcryptfunc func2);	GF_Err (*_mcrypt_set_state) (void *, void *, int );	GF_Err (*_mcrypt_get_state) (void *, void *, int *);	/*algo access*/	void *a_encrypt;	void *a_decrypt;	void *a_set_key;	u32 algo_size;	u32 algo_block_size;	u32 key_size;	u32 num_key_sizes;	u32 key_sizes[MAX_KEY_SIZES];	u32 algo_IV_size;	u32 mode_size;	Bool is_block_algo, is_block_algo_mode, is_block_mode, has_IV;} GF_CryptStream;/*modes*/void gf_crypt_register_cbc(GF_Crypt *td);void gf_crypt_register_cfb(GF_Crypt *td);void gf_crypt_register_ctr(GF_Crypt *td);void gf_crypt_register_ecb(GF_Crypt *td);void gf_crypt_register_ncfb(GF_Crypt *td);void gf_crypt_register_nofb(GF_Crypt *td);void gf_crypt_register_ofb(GF_Crypt *td);void gf_crypt_register_stream(GF_Crypt *td);/*algos*/void gf_crypt_register_des(GF_Crypt *td);void gf_crypt_register_3des(GF_Crypt *td);void gf_crypt_register_rijndael_128(GF_Crypt *td);void gf_crypt_register_rijndael_192(GF_Crypt *td);void gf_crypt_register_rijndael_256(GF_Crypt *td);#define rotl32(x,n)   (((x) << ((u32)(n))) | ((x) >> (32 - (u32)(n))))#define rotr32(x,n)   (((x) >> ((u32)(n))) | ((x) << (32 - (u32)(n))))#define rotl16(x,n)   (((x) << ((u16)(n))) | ((x) >> (16 - (u16)(n))))#define rotr16(x,n)   (((x) >> ((u16)(n))) | ((x) << (16 - (u16)(n))))/* Use hardware rotations.. when available */#ifdef swap32# define byteswap32(x) swap32(x)#else# ifdef swap_32#  define byteswap32(x) swap_32(x)# else#  ifdef bswap_32#   define byteswap32(x) bswap_32(x)#  else#   define byteswap32(x)	((rotl32(x, 8) & 0x00ff00ff) | (rotr32(x, 8) & 0xff00ff00))#  endif# endif#endif#ifdef swap16# define byteswap16(x) swap16(x)#else# ifdef swap_16#  define byteswap16(x) swap_16(x)# else#  ifdef bswap_16#   define byteswap16(x) bswap_16(x)#  else#   define byteswap16(x)	((rotl16(x, 8) & 0x00ff) | (rotr16(x, 8) & 0xff00))#  endif# endif#endifGFINLINE staticvoid memxor(unsigned char *o1, unsigned char *o2, int length){	int i;	for (i = 0; i < length; i++) {		o1[i] ^= o2[i];	}	return;}#define Bzero(x, y) memset(x, 0, y)#ifdef __cplusplus}#endif#endif	/*_GF_CRYPT_DEV_H_*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -