DIMA/trial3/layer2.c
2020-08-03 18:06:57 +02:00

85 lines
1.4 KiB
C

#include "layer2.h"
//RIOT core
void ROMprotocol(void)
{
printf("Hello function!\n");
//readUDS function
uint8_t * CDIKEY = calloc(1, sizeof(uint8_t)*CDI_KEY_SIZE);
_calcCDIKEY(CDIKEY);
for(int i = 0; i < CDI_KEY_SIZE; i++)
printf("%x",CDIKEY[i]);
printf(" : CDIKEY main\n");
printf("USE_ECC %d\n", USE_ECC);
deriveDeviceIDKeyPair(CDIKEY, USE_ECC);
deriveDeviceIDKeyPair(CDIKEY, USE_ECC);
printf("pass 100\n");
return;
}
void deriveDeviceIDKeyPair(uint8_t * CDIKEY, int isECC)
{
//firt generate ECC/RA key.
//check for deterministic consistency
//seed RNGs with CDI
//let's see how it goes
//add entropy source?
//seed RNG
//create ctx
//init
//gen keypair
//return pubkey and privkey both to L2?
KeyDrv_context DID_ctx;
DID_ctx.ENT_MODE = DETERM; //deterministec
DID_ctx.PKC_MODE = isECC;
DID_ctx.seed = CDIKEY;
DID_ctx.phrase = IDENTITY;
if(DID_ctx.PKC_MODE == isECC)
{
//mbedtls_mpi secret;
mbedtls_mpi_init(&DID_ctx.secret);
//mbedtls_ecp_point Public;
mbedtls_ecp_point_init(&DID_ctx.Public);
//return pubkey and privkey both to L2?
deriveECCKeyPair(&DID_ctx);
//secret and Public contain raw key inormation of generated keys
//Public also needs group and context to handle ECP
//Converting raw info to PEM is not easible like this
//free(DID_ctx);
return;
}
else
{
deriveRSAKeyPair();
return;
}
}