65 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			65 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| 
								 | 
							
								#include <stdio.h>
							 | 
						||
| 
								 | 
							
								#include <stdbool.h>
							 | 
						||
| 
								 | 
							
								#include "iot_config.h"
							 | 
						||
| 
								 | 
							
								#include "keypair.h"
							 | 
						||
| 
								 | 
							
								#include "log.h"
							 | 
						||
| 
								 | 
							
								static bool
							 | 
						||
| 
								 | 
							
								_test_create_fail()
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    if (IOTELIC_OK == keypair_create(KEY_SLOT_0, KEYPAIR_INVALID)) {
							 | 
						||
| 
								 | 
							
								        LOG("Success result with wrong intup data. So, it's bug.");
							 | 
						||
| 
								 | 
							
								        return false;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    return true;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								static bool
							 | 
						||
| 
								 | 
							
								_test_create_key(KEYSTORAGE_SLOT key_slot, KEYPAIR_TYPE keypair_type)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    if (IOTELIC_OK != keypair_create(key_slot, keypair_type)) {
							 | 
						||
| 
								 | 
							
								        LOG("%s keypair can't be created", keypair_name(keypair_type));
							 | 
						||
| 
								 | 
							
								        return false;
							 | 
						||
| 
								 | 
							
								    } else {
							 | 
						||
| 
								 | 
							
								        LOG("    %s keypair created successfully", keypair_name(keypair_type));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    return true;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								static bool
							 | 
						||
| 
								 | 
							
								_test_key_get_nist256r1_pass()
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    uint8_t public_key[128];
							 | 
						||
| 
								 | 
							
								    size_t public_key_sz;
							 | 
						||
| 
								 | 
							
								    KEYPAIR_TYPE type = KEYPAIR_INVALID;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if (IOTELIC_OK == keypair_create(KEY_SLOT_1, KEYPAIR_EC_SECP256R1)) {
							 | 
						||
| 
								 | 
							
								        return IOTELIC_OK == keypair_get_pubkey(KEY_SLOT_1, public_key, sizeof(public_key), &public_key_sz, &type)
							 | 
						||
| 
								 | 
							
								               && public_key_sz
							 | 
						||
| 
								 | 
							
								               && KEYPAIR_EC_SECP256R1 == type;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    return false;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								bool
							 | 
						||
| 
								 | 
							
								test_keypair(void)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    if (!_test_create_key(KEY_SLOT_1, KEYPAIR_EC_ED25519)) return false;
							 | 
						||
| 
								 | 
							
								    if (!_test_create_key(KEY_SLOT_2, KEYPAIR_EC_SECP192R1)) return false;
							 | 
						||
| 
								 | 
							
								    if (!_test_create_key(KEY_SLOT_3, KEYPAIR_EC_SECP256R1)) return false;
							 | 
						||
| 
								 | 
							
								    if (!_test_create_key(KEY_SLOT_0, KEYPAIR_EC_SECP384R1)) return false;
							 | 
						||
| 
								 | 
							
								    if (!_test_create_key(KEY_SLOT_1, KEYPAIR_EC_SECP521R1)) return false;
							 | 
						||
| 
								 | 
							
								    if (!_test_create_key(KEY_SLOT_2, KEYPAIR_EC_SECP192K1)) return false;
							 | 
						||
| 
								 | 
							
								    if (!_test_create_key(KEY_SLOT_3, KEYPAIR_EC_SECP224K1)) return false;
							 | 
						||
| 
								 | 
							
								    if (!_test_create_key(KEY_SLOT_0, KEYPAIR_EC_SECP256K1)) return false;
							 | 
						||
| 
								 | 
							
								    if (!_test_create_key(KEY_SLOT_1, KEYPAIR_EC_SECP256K1)) return false;
							 | 
						||
| 
								 | 
							
								    if (!_test_create_key(KEY_SLOT_2, KEYPAIR_EC_CURVE25519)) return false;
							 | 
						||
| 
								 | 
							
								    if (!_test_key_get_nist256r1_pass()) return false;
							 | 
						||
| 
								 | 
							
								    if (!_test_create_fail()) return false;
							 | 
						||
| 
								 | 
							
								#if (TARGET_VERSION == TARGET_KUNLUN3)
							 | 
						||
| 
								 | 
							
								    if (!_test_create_key(KEY_SLOT_1, KEYPAIR_RSA_2048)) return false;
							 | 
						||
| 
								 | 
							
								    if (!_test_create_key(KEY_SLOT_2, KEYPAIR_RSA_3072)) return false;
							 | 
						||
| 
								 | 
							
								    if (!_test_create_key(KEY_SLOT_1, KEYPAIR_RSA_4096)) return false;
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    return true;
							 | 
						||
| 
								 | 
							
								}
							 |