示例#1
0
static void gen_des_key_56_112_168()
{
	printf("  ####   gen_des_key_56_112_168   ####\n");

	TEE_Result ret;
	TEE_ObjectHandle des;
	TEE_ObjectHandle des3_112;
	TEE_ObjectHandle des3_168;

	/* des */
	ret = TEE_AllocateTransientObject(TEE_TYPE_DES, 56, &des);
	if (ret != TEE_SUCCESS) {
		printf("Fail: des alloc\n");
		goto err;
	}

	ret = TEE_GenerateKey(des, 56, NULL, 0);
	if (ret != TEE_SUCCESS) {
		printf("Fail: gen des\n");
		goto err;
	}

	/* des3 112 */
	ret = TEE_AllocateTransientObject(TEE_TYPE_DES3, 112, &des3_112);
	if (ret != TEE_SUCCESS) {
		printf("Fail: des3_112 alloc\n");
		goto err;
	}

	ret = TEE_GenerateKey(des3_112, 112, NULL, 0);
	if (ret != TEE_SUCCESS) {
		printf("Fail: gen des3_112\n");
		goto err;
	}

	/* des3 168 */
	ret = TEE_AllocateTransientObject(TEE_TYPE_DES3, 168, &des3_168);
	if (ret != TEE_SUCCESS) {
		printf("Fail: des3_168 alloc\n");
		goto err;
	}

	ret = TEE_GenerateKey(des3_168, 168, NULL, 0);
	if (ret != TEE_SUCCESS) {
		printf("Fail: gen des3_168\n");
		goto err;
	}

err:
	TEE_FreeTransientObject(des);
	TEE_FreeTransientObject(des3_112);
	TEE_FreeTransientObject(des3_168);
}
示例#2
0
TEE_Result get_random_key_method1()
{
    TEE_Result res;
    TEE_OperationHandle operation = TEE_HANDLE_NULL;
    uint32_t algorithm            = TEE_ALG_HMAC_MD5;
    uint32_t mode                 = TEE_MODE_MAC;
    uint32_t maxKeySize           = 512;

    res = TEE_AllocateOperation(&operation, algorithm, mode, maxKeySize);
    if(res != TEE_SUCCESS) {
        TEE_Printf("[err] TEE_AllocateOperation\n");
        goto _ret_;
    }

    uint32_t maxKeyObjectSize = maxKeySize; 

    //TEE_Attribute params;
    //uint32_t paramCount = 0;

    res = TEE_GenerateKey(operation->key1, maxKeyObjectSize, NULL, 0);
    if(res != TEE_SUCCESS) {
        TEE_Printf("[err] TEE_GenerateKey\n");
        return 0;
    }   

_ret_:

    if (operation) {
        TEE_FreeOperation(operation);   
    }

    return res;
}
示例#3
0
static void gen_rsa_key_pair_and_save_read()
{
	printf("  ####   gen_rsa_key_pair_and_save_read   ####\n");

	TEE_Result ret;
	TEE_ObjectHandle handler;
	TEE_ObjectHandle handler2;
	size_t key_size = 512;
	char objID[] = "56c5d1b260704de30fe7af67e5b9327613abebe6172a2b4e949d84b8e561e2fb";
	size_t objID_len = 64;
	uint32_t flags = 0xffffffff ^ TEE_DATA_FLAG_EXCLUSIVE;
	void * data;
	size_t data_len = 12;

	data = malloc(data_len);
	if (data == NULL)
		goto err;
	RAND_bytes(data, data_len);

	ret = TEE_AllocateTransientObject(TEE_TYPE_RSA_KEYPAIR, key_size, &handler);

	if (ret == TEE_ERROR_OUT_OF_MEMORY) {
		printf("Fail: no mem\n");
		goto err;
	}

	if (ret == TEE_ERROR_NOT_SUPPORTED) {
		printf("Fail: no sup\n");
		goto err;
	}

	ret = TEE_GenerateKey(handler, key_size, NULL, 0);

	if (ret != TEE_SUCCESS) {
		printf("Fail: bad para\n");
		goto err;
	}

	ret = TEE_CreatePersistentObject(TEE_STORAGE_PRIVATE, (void *)objID,
					 objID_len, flags, handler, data, data_len, NULL);

	if (ret != TEE_SUCCESS) {
		printf("Fail: per creation\n");
		goto err;
	}

	ret = TEE_OpenPersistentObject(TEE_STORAGE_PRIVATE, (void *)objID,
				       objID_len, flags, &handler2);
	if (ret != TEE_SUCCESS) {
		printf("Fail: per open\n");
		goto err;
	}

err:
	TEE_FreeTransientObject(handler);
	TEE_CloseAndDeletePersistentObject(handler2);

	free(data);
}
示例#4
0
static void gen_RSA_per_obj_with_data(TEE_ObjectHandle *gen_obj, size_t data_len)
{
	TEE_Result ret;
	TEE_ObjectHandle handler;
	size_t key_size = 512;
	void *ID = NULL;
	size_t ID_len = 30;
	uint32_t flags = 0xffffffff ^ TEE_DATA_FLAG_EXCLUSIVE;
	void * init_data;

	init_data = malloc(data_len);
	if (init_data == NULL) {
		printf("Fail: gen_rand_data_obj(inti_data mem)\n");
		goto err;
	}
	RAND_bytes(init_data, data_len);

	ID = malloc(ID_len);
	if (ID == NULL) {
		printf("Fail: gen_rand_data_obj(ID mem)\n");
		goto err;
	}
	RAND_bytes(ID, ID_len);

	ret = TEE_AllocateTransientObject(TEE_TYPE_RSA_KEYPAIR, key_size, &handler);
	if (ret != TEE_SUCCESS) {
		printf("Fail: gen_RSA_per_obj_with_data(alloc)\n");
		goto err;
	}

	ret = TEE_GenerateKey(handler, key_size, NULL, 0);
	if (ret != TEE_SUCCESS) {
		printf("Fail: gen_RSA_per_obj_with_data(gen key)\n");
		goto err;
	}

	ret = TEE_CreatePersistentObject(TEE_STORAGE_PRIVATE, ID, ID_len, flags, handler,
					 init_data, data_len, gen_obj);
	if (ret != TEE_SUCCESS) {
		printf("Fail: gen_RSA_per_obj_with_data(per create)\n");
		goto err;
	}

err:
	TEE_FreeTransientObject(handler);
	free(ID);
	free(init_data);
}
示例#5
0
static void gen_rsa_key_pair_and_copy_public()
{
	printf("  ####   gen_rsa_key_pair_and_copy_public   ####\n");

	TEE_Result ret;
	TEE_ObjectHandle rsa_keypair;
	TEE_ObjectHandle rsa_pubkey;
	size_t key_size = 512;

	ret = TEE_AllocateTransientObject(TEE_TYPE_RSA_KEYPAIR, key_size, &rsa_keypair);

	if (ret == TEE_ERROR_OUT_OF_MEMORY) {
		printf("Fail: no mem\n");
		goto err;
	}

	if (ret == TEE_ERROR_NOT_SUPPORTED) {
		printf("Fail: no sup\n");
		goto err;
	}

	ret = TEE_AllocateTransientObject(TEE_TYPE_RSA_PUBLIC_KEY, key_size, &rsa_pubkey);

	if (ret == TEE_ERROR_OUT_OF_MEMORY) {
		printf("Fail: no mem\n");
		goto err;
	}

	if (ret == TEE_ERROR_NOT_SUPPORTED) {
		printf("Fail: no sup\n");
		goto err;
	}

	ret = TEE_GenerateKey(rsa_keypair, key_size, NULL, 0);

	if (ret != TEE_SUCCESS) {
		printf("Fail: bad para\n");
		goto err;
	}

	TEE_CopyObjectAttributes(rsa_pubkey, rsa_keypair);

err:
	TEE_FreeTransientObject(rsa_keypair);
	TEE_FreeTransientObject(rsa_pubkey);
}
示例#6
0
TEE_Result ta_entry_generate_key(uint32_t param_type, TEE_Param params[4])
{
	TEE_Result res;
	TEE_Attribute *attrs;
	uint32_t attr_count;

	ASSERT_PARAM_TYPE(TEE_PARAM_TYPES
			  (TEE_PARAM_TYPE_VALUE_INPUT,
			   TEE_PARAM_TYPE_MEMREF_INPUT, TEE_PARAM_TYPE_NONE,
			   TEE_PARAM_TYPE_NONE));

	res = unpack_attrs(params[1].memref.buffer, params[1].memref.size,
			   &attrs, &attr_count);
	if (res != TEE_SUCCESS)
		return res;

	res = TEE_GenerateKey((TEE_ObjectHandle) params[0].value.a,
			      params[0].value.b, attrs, attr_count);
	TEE_Free(attrs);
	return res;
}
示例#7
0
static void data_stream_write_read()
{
	printf("  ####   data_stream_write_read   ####\n");

	TEE_Result ret;
	TEE_ObjectHandle handler;
	TEE_ObjectHandle per_han;
	size_t key_size = 512;
	char objID[] = "56c5d1b260704de30fe7af67e5b9327613abebe6172a2b4e949d84b8e561e2fb";
	size_t objID_len = 64;
	uint32_t flags = 0xffffffff ^ TEE_DATA_FLAG_EXCLUSIVE;
	void *write_data = NULL;
	void *read_data = NULL;
	size_t data_size = 50;
	uint32_t count = 0;


	write_data = calloc(1, data_size);
	if (write_data == NULL)
		goto err;
	read_data = calloc(1, data_size);
	if (read_data == NULL)
		goto err;

	/* gen random data */
	RAND_bytes(write_data, data_size);

	ret = TEE_AllocateTransientObject(TEE_TYPE_RSA_KEYPAIR, key_size, &handler);

	if (ret == TEE_ERROR_OUT_OF_MEMORY) {
		printf("Fail: no mem\n");
		goto err;
	}

	if (ret == TEE_ERROR_NOT_SUPPORTED) {
		printf("Fail: no sup\n");
		goto err;
	}

	ret = TEE_GenerateKey(handler, key_size, NULL, 0);

	if (ret != TEE_SUCCESS) {
		printf("Fail: bad para\n");
		goto err;
	}

	ret = TEE_CreatePersistentObject(TEE_STORAGE_PRIVATE, (void *)objID, objID_len,
					 flags, handler, NULL, 0, &per_han);

	if (ret != TEE_SUCCESS) {
		printf("Fail: per creation\n");
		goto err;
	}

	ret = TEE_WriteObjectData(per_han, write_data, data_size);
	if (ret != TEE_SUCCESS) {
		printf("Fail: per write\n");
		goto err;
	}

	ret = TEE_SeekObjectData(per_han, 0, TEE_DATA_SEEK_SET);
	if (ret != TEE_SUCCESS) {
		printf("Fail: per seek\n");
		goto err;
	}

	ret = TEE_ReadObjectData(per_han, read_data, data_size, &count);
	if (ret != TEE_SUCCESS) {
		printf("Fail: per read\n");
		goto err;
	}

err:
	TEE_CloseAndDeletePersistentObject(per_han);
	TEE_CloseObject(handler);
	free(write_data);
	free(read_data);
}