 9e62f08e4d
			
		
	
	
		9e62f08e4d
		
			
		
	
	
	
	
		
			
			* U2F implementation prototype * U2F data encryption and store, user confirmation request * remove debug prints * fix notification bug in chrome * split u2f_alloc into u2f_init and u2f_alloc * typo fix, furi-hal-trng -> furi-hal-random * rand/srand redefinition * SubGhz: a little bit of Dante. * u2f_data naming fix Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
		
			
				
	
	
		
			109 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			109 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* Copyright 2015, Kenneth MacKay. Licensed under the BSD 2-clause license. */
 | |
| 
 | |
| #ifndef _UECC_TYPES_H_
 | |
| #define _UECC_TYPES_H_
 | |
| 
 | |
| #ifndef uECC_PLATFORM
 | |
|     #if __AVR__
 | |
|         #define uECC_PLATFORM uECC_avr
 | |
|     #elif defined(__thumb2__) || defined(_M_ARMT) /* I think MSVC only supports Thumb-2 targets */
 | |
|         #define uECC_PLATFORM uECC_arm_thumb2
 | |
|     #elif defined(__thumb__)
 | |
|         #define uECC_PLATFORM uECC_arm_thumb
 | |
|     #elif defined(__arm__) || defined(_M_ARM)
 | |
|         #define uECC_PLATFORM uECC_arm
 | |
|     #elif defined(__aarch64__)
 | |
|         #define uECC_PLATFORM uECC_arm64
 | |
|     #elif defined(__i386__) || defined(_M_IX86) || defined(_X86_) || defined(__I86__)
 | |
|         #define uECC_PLATFORM uECC_x86
 | |
|     #elif defined(__amd64__) || defined(_M_X64)
 | |
|         #define uECC_PLATFORM uECC_x86_64
 | |
|     #else
 | |
|         #define uECC_PLATFORM uECC_arch_other
 | |
|     #endif
 | |
| #endif
 | |
| 
 | |
| #ifndef uECC_ARM_USE_UMAAL
 | |
|     #if (uECC_PLATFORM == uECC_arm) && (__ARM_ARCH >= 6)
 | |
|         #define uECC_ARM_USE_UMAAL 1
 | |
|     #elif (uECC_PLATFORM == uECC_arm_thumb2) && (__ARM_ARCH >= 6) && !__ARM_ARCH_7M__
 | |
|         #define uECC_ARM_USE_UMAAL 1
 | |
|     #else
 | |
|         #define uECC_ARM_USE_UMAAL 0
 | |
|     #endif
 | |
| #endif
 | |
| 
 | |
| #ifndef uECC_WORD_SIZE
 | |
|     #if uECC_PLATFORM == uECC_avr
 | |
|         #define uECC_WORD_SIZE 1
 | |
|     #elif (uECC_PLATFORM == uECC_x86_64 || uECC_PLATFORM == uECC_arm64)
 | |
|         #define uECC_WORD_SIZE 8
 | |
|     #else
 | |
|         #define uECC_WORD_SIZE 4
 | |
|     #endif
 | |
| #endif
 | |
| 
 | |
| #if (uECC_WORD_SIZE != 1) && (uECC_WORD_SIZE != 4) && (uECC_WORD_SIZE != 8)
 | |
|     #error "Unsupported value for uECC_WORD_SIZE"
 | |
| #endif
 | |
| 
 | |
| #if ((uECC_PLATFORM == uECC_avr) && (uECC_WORD_SIZE != 1))
 | |
|     #pragma message ("uECC_WORD_SIZE must be 1 for AVR")
 | |
|     #undef uECC_WORD_SIZE
 | |
|     #define uECC_WORD_SIZE 1
 | |
| #endif
 | |
| 
 | |
| #if ((uECC_PLATFORM == uECC_arm || uECC_PLATFORM == uECC_arm_thumb || \
 | |
|         uECC_PLATFORM ==  uECC_arm_thumb2) && \
 | |
|      (uECC_WORD_SIZE != 4))
 | |
|     #pragma message ("uECC_WORD_SIZE must be 4 for ARM")
 | |
|     #undef uECC_WORD_SIZE
 | |
|     #define uECC_WORD_SIZE 4
 | |
| #endif
 | |
| 
 | |
| #if defined(__SIZEOF_INT128__) || ((__clang_major__ * 100 + __clang_minor__) >= 302)
 | |
|     #define SUPPORTS_INT128 1
 | |
| #else
 | |
|     #define SUPPORTS_INT128 0
 | |
| #endif
 | |
| 
 | |
| typedef int8_t wordcount_t;
 | |
| typedef int16_t bitcount_t;
 | |
| typedef int8_t cmpresult_t;
 | |
| 
 | |
| #if (uECC_WORD_SIZE == 1)
 | |
| 
 | |
| typedef uint8_t uECC_word_t;
 | |
| typedef uint16_t uECC_dword_t;
 | |
| 
 | |
| #define HIGH_BIT_SET 0x80
 | |
| #define uECC_WORD_BITS 8
 | |
| #define uECC_WORD_BITS_SHIFT 3
 | |
| #define uECC_WORD_BITS_MASK 0x07
 | |
| 
 | |
| #elif (uECC_WORD_SIZE == 4)
 | |
| 
 | |
| typedef uint32_t uECC_word_t;
 | |
| typedef uint64_t uECC_dword_t;
 | |
| 
 | |
| #define HIGH_BIT_SET 0x80000000
 | |
| #define uECC_WORD_BITS 32
 | |
| #define uECC_WORD_BITS_SHIFT 5
 | |
| #define uECC_WORD_BITS_MASK 0x01F
 | |
| 
 | |
| #elif (uECC_WORD_SIZE == 8)
 | |
| 
 | |
| typedef uint64_t uECC_word_t;
 | |
| #if SUPPORTS_INT128
 | |
| typedef unsigned __int128 uECC_dword_t;
 | |
| #endif
 | |
| 
 | |
| #define HIGH_BIT_SET 0x8000000000000000ull
 | |
| #define uECC_WORD_BITS 64
 | |
| #define uECC_WORD_BITS_SHIFT 6
 | |
| #define uECC_WORD_BITS_MASK 0x03F
 | |
| 
 | |
| #endif /* uECC_WORD_SIZE */
 | |
| 
 | |
| #endif /* _UECC_TYPES_H_ */
 |