diff options
Diffstat (limited to 'sw')
-rw-r--r-- | sw/cryptech.h | 178 |
1 files changed, 91 insertions, 87 deletions
diff --git a/sw/cryptech.h b/sw/cryptech.h index 05862bb..5b01bc9 100644 --- a/sw/cryptech.h +++ b/sw/cryptech.h @@ -295,24 +295,24 @@ in order to map it into a 16-bit address space. #define AES_CONFIG_ENCDEC 1 #define AES_CONFIG_KEYLEN 2 -#define AES_ADDR_KEY0 0x10 -#define AES_ADDR_KEY1 0x11 -#define AES_ADDR_KEY2 0x12 -#define AES_ADDR_KEY3 0x13 -#define AES_ADDR_KEY4 0x14 -#define AES_ADDR_KEY5 0x15 -#define AES_ADDR_KEY6 0x16 -#define AES_ADDR_KEY7 0x17 - -#define AES_ADDR_BLOCK0 0x20 -#define AES_ADDR_BLOCK1 0x21 -#define AES_ADDR_BLOCK2 0x22 -#define AES_ADDR_BLOCK3 0x23 - -#define AES_ADDR_RESULT0 0x30 -#define AES_ADDR_RESULT1 0x31 -#define AES_ADDR_RESULT2 0x32 -#define AES_ADDR_RESULT3 0x33 +#define AES_ADDR_KEY0 AES_ADDR_BASE + 0x10 +#define AES_ADDR_KEY1 AES_ADDR_BASE + 0x11 +#define AES_ADDR_KEY2 AES_ADDR_BASE + 0x12 +#define AES_ADDR_KEY3 AES_ADDR_BASE + 0x13 +#define AES_ADDR_KEY4 AES_ADDR_BASE + 0x14 +#define AES_ADDR_KEY5 AES_ADDR_BASE + 0x15 +#define AES_ADDR_KEY6 AES_ADDR_BASE + 0x16 +#define AES_ADDR_KEY7 AES_ADDR_BASE + 0x17 + +#define AES_ADDR_BLOCK0 AES_ADDR_BASE + 0x20 +#define AES_ADDR_BLOCK1 AES_ADDR_BASE + 0x21 +#define AES_ADDR_BLOCK2 AES_ADDR_BASE + 0x22 +#define AES_ADDR_BLOCK3 AES_ADDR_BASE + 0x23 + +#define AES_ADDR_RESULT0 AES_ADDR_BASE + 0x30 +#define AES_ADDR_RESULT1 AES_ADDR_BASE + 0x31 +#define AES_ADDR_RESULT2 AES_ADDR_BASE + 0x32 +#define AES_ADDR_RESULT3 AES_ADDR_BASE + 0x33 // current name and version values #define AES_CORE_NAME0 "aes " @@ -328,56 +328,56 @@ in order to map it into a 16-bit address space. #define CHACHA_ADDR_CTRL CHACHA_ADDR_BASE + ADDR_CTRL #define CHACHA_ADDR_STATUS CHACHA_ADDR_BASE + ADDR_STATUS -#define CHACHA_ADDR_KEYLEN 0x0a +#define CHACHA_ADDR_KEYLEN CHACHA_ADDR_BASE + 0x0a #define CHACHA_KEYLEN 1 -#define CHACHA_ADDR_ROUNDS 0x0b - -#define CHACHA_ADDR_KEY0 0x10 -#define CHACHA_ADDR_KEY1 0x11 -#define CHACHA_ADDR_KEY2 0x12 -#define CHACHA_ADDR_KEY3 0x13 -#define CHACHA_ADDR_KEY4 0x14 -#define CHACHA_ADDR_KEY5 0x15 -#define CHACHA_ADDR_KEY6 0x16 -#define CHACHA_ADDR_KEY7 0x17 - -#define CHACHA_ADDR_IV0 0x20 -#define CHACHA_ADDR_IV1 0x21 - -#define CHACHA_ADDR_DATA_IN0 0x40 -#define CHACHA_ADDR_DATA_IN1 0x41 -#define CHACHA_ADDR_DATA_IN2 0x42 -#define CHACHA_ADDR_DATA_IN3 0x43 -#define CHACHA_ADDR_DATA_IN4 0x44 -#define CHACHA_ADDR_DATA_IN5 0x45 -#define CHACHA_ADDR_DATA_IN6 0x46 -#define CHACHA_ADDR_DATA_IN7 0x47 -#define CHACHA_ADDR_DATA_IN8 0x48 -#define CHACHA_ADDR_DATA_IN9 0x49 -#define CHACHA_ADDR_DATA_IN10 0x4a -#define CHACHA_ADDR_DATA_IN11 0x4b -#define CHACHA_ADDR_DATA_IN12 0x4c -#define CHACHA_ADDR_DATA_IN13 0x4d -#define CHACHA_ADDR_DATA_IN14 0x4e -#define CHACHA_ADDR_DATA_IN15 0x4f - -#define CHACHA_ADDR_DATA_OUT0 0x80 -#define CHACHA_ADDR_DATA_OUT1 0x81 -#define CHACHA_ADDR_DATA_OUT2 0x82 -#define CHACHA_ADDR_DATA_OUT3 0x83 -#define CHACHA_ADDR_DATA_OUT4 0x84 -#define CHACHA_ADDR_DATA_OUT5 0x85 -#define CHACHA_ADDR_DATA_OUT6 0x86 -#define CHACHA_ADDR_DATA_OUT7 0x87 -#define CHACHA_ADDR_DATA_OUT8 0x88 -#define CHACHA_ADDR_DATA_OUT9 0x89 -#define CHACHA_ADDR_DATA_OUT10 0x8a -#define CHACHA_ADDR_DATA_OUT11 0x8b -#define CHACHA_ADDR_DATA_OUT12 0x8c -#define CHACHA_ADDR_DATA_OUT13 0x8d -#define CHACHA_ADDR_DATA_OUT14 0x8e -#define CHACHA_ADDR_DATA_OUT15 0x8f +#define CHACHA_ADDR_ROUNDS CHACHA_ADDR_BASE + 0x0b + +#define CHACHA_ADDR_KEY0 CHACHA_ADDR_BASE + 0x10 +#define CHACHA_ADDR_KEY1 CHACHA_ADDR_BASE + 0x11 +#define CHACHA_ADDR_KEY2 CHACHA_ADDR_BASE + 0x12 +#define CHACHA_ADDR_KEY3 CHACHA_ADDR_BASE + 0x13 +#define CHACHA_ADDR_KEY4 CHACHA_ADDR_BASE + 0x14 +#define CHACHA_ADDR_KEY5 CHACHA_ADDR_BASE + 0x15 +#define CHACHA_ADDR_KEY6 CHACHA_ADDR_BASE + 0x16 +#define CHACHA_ADDR_KEY7 CHACHA_ADDR_BASE + 0x17 + +#define CHACHA_ADDR_IV0 CHACHA_ADDR_BASE + 0x20 +#define CHACHA_ADDR_IV1 CHACHA_ADDR_BASE + 0x21 + +#define CHACHA_ADDR_DATA_IN0 CHACHA_ADDR_BASE + 0x40 +#define CHACHA_ADDR_DATA_IN1 CHACHA_ADDR_BASE + 0x41 +#define CHACHA_ADDR_DATA_IN2 CHACHA_ADDR_BASE + 0x42 +#define CHACHA_ADDR_DATA_IN3 CHACHA_ADDR_BASE + 0x43 +#define CHACHA_ADDR_DATA_IN4 CHACHA_ADDR_BASE + 0x44 +#define CHACHA_ADDR_DATA_IN5 CHACHA_ADDR_BASE + 0x45 +#define CHACHA_ADDR_DATA_IN6 CHACHA_ADDR_BASE + 0x46 +#define CHACHA_ADDR_DATA_IN7 CHACHA_ADDR_BASE + 0x47 +#define CHACHA_ADDR_DATA_IN8 CHACHA_ADDR_BASE + 0x48 +#define CHACHA_ADDR_DATA_IN9 CHACHA_ADDR_BASE + 0x49 +#define CHACHA_ADDR_DATA_IN10 CHACHA_ADDR_BASE + 0x4a +#define CHACHA_ADDR_DATA_IN11 CHACHA_ADDR_BASE + 0x4b +#define CHACHA_ADDR_DATA_IN12 CHACHA_ADDR_BASE + 0x4c +#define CHACHA_ADDR_DATA_IN13 CHACHA_ADDR_BASE + 0x4d +#define CHACHA_ADDR_DATA_IN14 CHACHA_ADDR_BASE + 0x4e +#define CHACHA_ADDR_DATA_IN15 CHACHA_ADDR_BASE + 0x4f + +#define CHACHA_ADDR_DATA_OUT0 CHACHA_ADDR_BASE + 0x80 +#define CHACHA_ADDR_DATA_OUT1 CHACHA_ADDR_BASE + 0x81 +#define CHACHA_ADDR_DATA_OUT2 CHACHA_ADDR_BASE + 0x82 +#define CHACHA_ADDR_DATA_OUT3 CHACHA_ADDR_BASE + 0x83 +#define CHACHA_ADDR_DATA_OUT4 CHACHA_ADDR_BASE + 0x84 +#define CHACHA_ADDR_DATA_OUT5 CHACHA_ADDR_BASE + 0x85 +#define CHACHA_ADDR_DATA_OUT6 CHACHA_ADDR_BASE + 0x86 +#define CHACHA_ADDR_DATA_OUT7 CHACHA_ADDR_BASE + 0x87 +#define CHACHA_ADDR_DATA_OUT8 CHACHA_ADDR_BASE + 0x88 +#define CHACHA_ADDR_DATA_OUT9 CHACHA_ADDR_BASE + 0x89 +#define CHACHA_ADDR_DATA_OUT10 CHACHA_ADDR_BASE + 0x8a +#define CHACHA_ADDR_DATA_OUT11 CHACHA_ADDR_BASE + 0x8b +#define CHACHA_ADDR_DATA_OUT12 CHACHA_ADDR_BASE + 0x8c +#define CHACHA_ADDR_DATA_OUT13 CHACHA_ADDR_BASE + 0x8d +#define CHACHA_ADDR_DATA_OUT14 CHACHA_ADDR_BASE + 0x8e +#define CHACHA_ADDR_DATA_OUT15 CHACHA_ADDR_BASE + 0x8f // current name and version values #define CHACHA_NAME0 "chac" @@ -389,33 +389,37 @@ in order to map it into a 16-bit address space. // MATH segment. // ----------------------------------------------------------------- // Modexp core. -#define GENERAL_PREFIX 0x000 -#define MODULUS_PREFIX 0x100 -#define EXPONENT_PREFIX 0x200 -#define MESSAGE_PREFIX 0x300 -#define RESULT_PREFIX 0x400 +#define MODEXP_ADDR_BASE SEGMENT_OFFSET_MATH + (0x00 * CORE_SIZE) +#define MODEXP_ADDR_NAME0 MODEXP_ADDR_BASE + ADDR_NAME0 +#define MODEXP_ADDR_NAME1 MODEXP_ADDR_BASE + ADDR_NAME1 +#define MODEXP_ADDR_VERSION MODEXP_ADDR_BASE + ADDR_VERSION +#define MODEXP_ADDR_CTRL MODEXP_ADDR_BASE + ADDR_CTRL +#define MODEXP_CTRL_INIT_BIT 1 +#define MODEXP_CTRL_NEXT_BIT 2 +#define MODEXP_ADDR_STATUS MODEXP_ADDR_BASE + ADDR_STATUS -#define MODEXP_ADDR_BASE SEGMENT_OFFSET_MATH + (0x00 * CORE_SIZE) -#define MODEXP_ADDR_NAME0 MODEXP_ADDR_BASE + ADDR_NAME0 -#define MODEXP_ADDR_NAME1 MODEXP_ADDR_BASE + ADDR_NAME1 -#define MODEXP_ADDR_VERSION MODEXP_ADDR_BASE + ADDR_VERSION -#define MODEXP_ADDR_CTRL MODEXP_ADDR_BASE + ADDR_CTRL -#define MODEXP_ADDR_STATUS MODEXP_ADDR_BASE + ADDR_STATUS +#define MODEXP_ADDR_DELAY MODEXP_ADDR_BASE + 0x13 +#define MODEXP_STATUS_READY 1 -#define MODEXP_ADDR_DELAY MODEXP_ADDR_BASE + 0x13 -#define MODEXP_STATUS_READY 1 +#define MODEXP_MODULUS_LENGTH MODEXP_ADDR_BASE + 0x20 +#define MODEXP_EXPONENT_LENGTH MODEXP_ADDR_BASE + 0x21 +#define MODEXP_LENGTH MODEXP_ADDR_BASE + 0x22 -#define MODEXP_MODULUS_LENGTH MODEXP_ADDR_BASE + 0x20 -#define MODEXP_EXPONENT_LENGTH MODEXP_ADDR_BASE + 0x21 +#define MODEXP_MODULUS_PTR_RST MODEXP_ADDR_BASE + 0x30 +#define MODEXP_MODULUS_DATA MODEXP_ADDR_BASE + 0x31 -// Most cores need fewer than 256 registers, but Modexp needs many more. -//#define NEXT_MATH_ADDR_BASE SEGMENT_OFFSET_MATH + (0x05 * CORE_SIZE) +#define MODEXP_EXPONENT_PTR_RST MODEXP_ADDR_BASE + 0x40 +#define MODEXP_EXPONENT_DATA MODEXP_ADDR_BASE + 0x41 -// current name and version values -#define MODEXP_NAME0 "mode" -#define MODEXP_NAME1 "xp " -#define MODEXP_VERSION "0.50" +#define MODEXP_MESSAGE_PTR_RST MODEXP_ADDR_BASE + 0x50 +#define MODEXP_MESSAGE_DATA MODEXP_ADDR_BASE + 0x51 + +#define MODEXP_RESULT_PTR_RST MODEXP_ADDR_BASE + 0x60 +#define MODEXP_RESULT_DATA MODEXP_ADDR_BASE + 0x61 +#define MODEXP_NAME0 "mode" +#define MODEXP_NAME1 "xp " +#define MODEXP_VERSION "0.51" //------------------------------------------------------------------ |