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

📄 geode_crypto.h

📁 linux for amd development lx8
💻 H
字号:
#ifndef CRYPTO_H_/* The key length is now and forever more 128 bits */#define CRYPTO_KEY_LEN             16#define CRYPTO_SESSION_HWKEY       0x001#define CRYPTO_SESSION_ECB         0x010#define CRYPTO_SESSION_CBC         0x020#define CRYPTO_SESSION_NOCOHERENCY 0x100#define CRYPTO_FLAG_DECRYPT        0x001#define CRYPTO_FLAG_ENCRYPT        0x002/* Size of the user block in the EEPROM */#define EEPROM_SIZE                237#define EEPROM_LOWER_RW            0x01#define EEPROM_UPPER_RW            0x02struct geode_crypt_session {	unsigned int  flags;	unsigned int  blocksize;	unsigned char key[CRYPTO_KEY_LEN];	int id;  };struct geode_crypt_op {	int id;	unsigned int  flags;	unsigned int  len; 		void *src;	void *dst;	void *iv;};struct geode_crypt_key {	int id;	unsigned char key[CRYPTO_KEY_LEN];};#define CIOCGSESSION  _IOWR('c', 101, struct geode_crypt_session *)#define CIOCFSESSION  _IOW('c',  102, unsigned int)#define CIOCCRYPT     _IOWR('c', 103, struct geode_crypt_op *)#define CIOCSKEY      _IOW('c', 103,  struct geode_crypt_key *)#define EIOCSKEYOFF   _IOW('c',  104, unsigned int)#define EIOCSLOCKUP   _IOW('c',  105, unsigned int)#define EIOCSLOCKLW   _IOW('c',  106, unsigned int)#define EIOSKEY       _IOW('c',  107, unsigned char *)#define EIOGPERMS     _IOR('c',  108, int)#ifdef __KERNEL__#define GEODE_CRYPT_MINOR_DEV 155/* Doh - Cimarron is 156 */#define GEODE_EEPROM_MINOR_DEV 157#define AES_CONTROLA_REG  0x0000#define AES_CONTROLB_REG  0x0004/* Ctrl register bits */#define AES_CTRL_START    0x01#define AES_CTRL_DECRYPT  0x00 /* Default - but defined for simplicity */#define AES_CTRL_ENCRYPT  0x02#define AES_CTRL_WRKEY    0x04#define AES_CTRL_DCA      0x08#define AES_CTRL_SCA      0x10#define AES_CTRL_CBCA     0x20#define AES_INTERRUPT_REG 0x0008#define AES_INTR_EEPROM_PENDING 0x40000#define AES_INTR_B_PENDING      0x20000#define AES_INTR_A_PENDING      0x10000#define AES_INTR_PENDING        (AES_INTR_A_PENDING | AES_INTR_B_PENDING)#define AES_INTR_EEPROM_MASK    0x00004#define AES_INTR_A_MASK         0x00002#define AES_INTR_B_MASK         0x00001#define AES_SOURCEA_REG   0x0010#define AES_DSTA_REG      0x0014#define AES_LENA_REG      0x0018#define AES_SOURCEB_REG   0x0020#define AES_DSTB_REG      0x0024#define AES_LENB_REG      0x0028#define AES_WRITEKEY0_REG 0x0030#define AES_WRITEKEY1_REG 0x0034#define AES_WRITEKEY2_REG 0x0038#define AES_WRITEKEY3_REG 0x003C#define AES_WRITEIV0_REG  0x0040#define AES_WRITEIV1_REG  0x0044#define AES_WRITEIV2_REG  0x0048#define AES_WRITEIV3_REG  0x004C/* EEPROM definitions */#define EEPROM_CTRL_REG   0x0800#define EEPROM_CTRL_READ       0x00#define EEPROM_CTRL_START      0x01#define EEPROM_CTRL_WRITE      0x02#define EEPROM_CTRL_EXCEPT     0x04#define EEPROM_CTRL_KEYDISABLE 0x20#define EEPROM_ADDR_REG   0x0804#define EEPROM_DATA_REG   0x0808#define EEPROM_SEC_REG    0x080C#define EEPROM_ACCESS_WPL 0x0007#define EEPROM_ACCESS_WPU 0x0070/* Defines for the eeprom space map - only the key offset is used by    the driver, everywhere from 18 to 255 is the users space, and he only   thinks he has 238 total bytes of space */#define EEPROM_WPL_OFFSET     0x00#define EEPROM_WPE_OFFSET      0x01#define EEPROM_KEY_OFFSET      0x02#define EEPROM_ID_OFFSET       18#define EEPROM_ULOWER_OFFSET   34#define EEPROM_UUPPER_OFFSET   128struct geode_crypt_ksession {	u32 flags;        u32 blocksize;        u8  key[CRYPTO_KEY_LEN];        int id;		void *src;	void *dest;};struct crypt_slist {	int id;	struct geode_crypt_ksession session;	struct crypt_slist *next;};struct geode_crypt_driver {  unsigned char *base;  int flags;  struct semaphore dev_mutex;  struct semaphore engine_mutex;  struct semaphore eeprom_mutex;  int session_index;  struct crypt_slist *session_list;};#endif #endif

⌨️ 快捷键说明

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