diff --git a/trial3/layer1.c b/trial3/layer1.c index 781a92a..e62b3cc 100644 --- a/trial3/layer1.c +++ b/trial3/layer1.c @@ -180,4 +180,49 @@ int _calcCDIKEY(uint8_t * CDIKEY) free(KEYIN); return RIOTSUCCESS; -} \ No newline at end of file +} + +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;} \ No newline at end of file diff --git a/trial3/layer1.h b/trial3/layer1.h index baeddd0..43a46b4 100644 --- a/trial3/layer1.h +++ b/trial3/layer1.h @@ -1,11 +1,16 @@ #include #include - -#include +#include +#include +#include #include +#include +#include +#include #include #include +#include #include #include @@ -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); \ No newline at end of file +int _calcCDIKEY(uint8_t * CDIKEY); +int deriveECCKeyPair(mbedtls_mpi * SK, mbedtls_ecp_point * PK); +int deriveRSAKeyPair(void); \ No newline at end of file diff --git a/trial3/layer2.c b/trial3/layer2.c index 5dfff3e..bbe7132 100644 --- a/trial3/layer2.c +++ b/trial3/layer2.c @@ -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; } diff --git a/trial3/out/main b/trial3/out/main index 03f69eb..a9ecfe1 100755 Binary files a/trial3/out/main and b/trial3/out/main differ