move key derivatin to layer1

This commit is contained in:
atul.jha 2020-07-24 16:24:10 +02:00
parent 6cd9bed88d
commit 4214e472f9
4 changed files with 80 additions and 22 deletions

View File

@ -180,4 +180,49 @@ int _calcCDIKEY(uint8_t * CDIKEY)
free(KEYIN);
return RIOTSUCCESS;
}
}
int deriveECCKeyPair(mbedtls_mpi * SK, mbedtls_ecp_point * PK)
{
printf("inside deriveECCKeyPair layer1\n\n");
mbedtls_ecp_group ecpGrp;
mbedtls_ecp_group_init(&ecpGrp);
mbedtls_ecp_group_load(&ecpGrp, ECC_CURVE);
mbedtls_mpi secret;
mbedtls_mpi_init(&secret);
mbedtls_ecp_point Public;
mbedtls_ecp_point_init(&Public);
mbedtls_entropy_context entropyCtx;
mbedtls_entropy_init(&entropyCtx);
mbedtls_ctr_drbg_context drbgCtx;
mbedtls_ctr_drbg_init(&drbgCtx);
//Seed drbg with secret data now?
int ret = mbedtls_ctr_drbg_seed(&drbgCtx, mbedtls_entropy_func, &entropyCtx,
(const unsigned char *) "Private", sizeof("Private"));
ret = mbedtls_ecp_gen_keypair(&ecpGrp, &secret, &Public,
mbedtls_ctr_drbg_random, &drbgCtx);
mbedtls_ecp_copy(PK, &Public);
mbedtls_mpi_copy(SK, &secret);
mbedtls_mpi_free(&secret);
mbedtls_ecp_point_free(&Public);
mbedtls_ecp_group_free(&ecpGrp);
mbedtls_entropy_free(&entropyCtx);
mbedtls_ctr_drbg_free(&drbgCtx);
printf("leaving deriveECCKeyPair layer1\n\n");
return 0;
}
int deriveRSAKeyPair(void){return 0;}

View File

@ -1,11 +1,16 @@
#include <stdio.h>
#include <stdlib.h>
#include <mbedtls/hkdf.h>
#include <mbedtls/bignum.h>
#include <mbedtls/entropy.h>
#include <mbedtls/ctr_drbg.h>
#include <mbedtls/hmac_drbg.h>
#include <mbedtls/ecp.h>
#include <mbedtls/ecdh.h>
#include <mbedtls/ecdsa.h>
#include <mbedtls/hkdf.h>
#include <mbedtls/md.h>
#include <mbedtls/aes.h>
#include <mbedtls/sha1.h>
#include <mbedtls/sha256.h>
@ -17,4 +22,6 @@
int readUDS(uint8_t* UDSdigest);
int readFWID(uint8_t * FW_M);
int _calcCDID(uint8_t * CDID);
int _calcCDIKEY(uint8_t * CDIKEY);
int _calcCDIKEY(uint8_t * CDIKEY);
int deriveECCKeyPair(mbedtls_mpi * SK, mbedtls_ecp_point * PK);
int deriveRSAKeyPair(void);

View File

@ -60,30 +60,36 @@ void deriveDeviceIDKeyPair(uint8_t * CDIKEY, int isECC)
{
mbedtls_ecp_group ecpGrp;
mbedtls_ecp_group_init(&ecpGrp);
mbedtls_ecp_group_load(&ecpGrp, ECC_CURVE);
// mbedtls_ecp_group ecpGrp;
// mbedtls_ecp_group_init(&ecpGrp);
// mbedtls_ecp_group_load(&ecpGrp, ECC_CURVE);
mbedtls_mpi secret;
// mbedtls_mpi secret;
// mbedtls_mpi_init(&secret);
// mbedtls_ecp_point Public;
// mbedtls_ecp_point_init(&Public);
// mbedtls_entropy_context entropyCtx;
// mbedtls_entropy_init(&entropyCtx);
// mbedtls_ctr_drbg_context drbgCtx;
// mbedtls_ctr_drbg_init(&drbgCtx);
// int ret = mbedtls_ctr_drbg_seed(&drbgCtx, mbedtls_entropy_func, &entropyCtx,
// (const unsigned char *) "Private", sizeof("Private"));
// ret = mbedtls_ecp_gen_keypair(&ecpGrp, &secret, &Public,
// mbedtls_ctr_drbg_random, &drbgCtx);
mbedtls_mpi secret;
mbedtls_mpi_init(&secret);
mbedtls_ecp_point Public;
mbedtls_ecp_point_init(&Public);
mbedtls_entropy_context entropyCtx;
mbedtls_entropy_init(&entropyCtx);
mbedtls_ctr_drbg_context drbgCtx;
mbedtls_ctr_drbg_init(&drbgCtx);
int ret = mbedtls_ctr_drbg_seed(&drbgCtx, mbedtls_entropy_func, &entropyCtx,
(const unsigned char *) "Private", sizeof("Private"));
ret = mbedtls_ecp_gen_keypair(&ecpGrp, &secret, &Public,
mbedtls_ctr_drbg_random, &drbgCtx);
deriveECCKeyPair(&secret, &Public);b
return;
}

Binary file not shown.