From c422a95a43ce006749dca268769da1a168eee88d Mon Sep 17 00:00:00 2001 From: "atul.jha" Date: Tue, 28 Jul 2020 17:57:22 +0200 Subject: [PATCH] ECC key to string --- trial3/layer1.c | 89 +++++++++++++++++--- trial3/links.txt | 14 +++ trial3/nbproject/private/configurations.xml | 83 +----------------- trial3/nbproject/private/private.xml | 10 +++ trial3/out/main | Bin 18600 -> 18704 bytes 5 files changed, 103 insertions(+), 93 deletions(-) diff --git a/trial3/layer1.c b/trial3/layer1.c index 258f5f7..a489eaf 100644 --- a/trial3/layer1.c +++ b/trial3/layer1.c @@ -28,11 +28,11 @@ int readUDS(uint8_t* UDSdigest) for (int i = 0; i < UDS_SIZE; i++) - printf("%x", UDSbuf[i]); + printf("%hhx", UDSbuf[i]); printf(" : fuse secret\n" ); for (int i = 0; i < UDS_DGST_SIZE; i++) - printf("%x", UDSdigest[i]); + printf("%hhx", UDSdigest[i]); printf(" : UDS ID\n" ); free(UDSbuf); @@ -78,7 +78,7 @@ int readFWID(uint8_t* FW_M) //printf("File contnts : %s\n", source); for(int i = 0; i < FW_DGST_SIZE; i++) - printf("%x",FW_M[i]); + printf("%hhx",FW_M[i]); printf(" : FW digest\n"); //free(source); @@ -133,7 +133,7 @@ int _calcCDID(uint8_t * CDID) } for(int i = 0; i < CDI_DGST_SIZE; i++) - printf("%x",CDID[i]); + printf("%hhx",CDID[i]); printf(" : CDID\n"); free(UDS_ID); @@ -154,7 +154,7 @@ int _calcCDIKEY(uint8_t * CDIKEY) _calcCDID(KEYIN); for(int i = 0; i < SHA256_DGST_SIZE; i++) - printf("%x",KEYIN[i]); + printf("%hhx",KEYIN[i]); printf(" : CDID main\n"); const mbedtls_md_info_t * md_info; @@ -174,7 +174,7 @@ int _calcCDIKEY(uint8_t * CDIKEY) //mbedtls_hkdf_extract( md_info, salt, sizeof(salt),KEYIN, CDI_DGST_SIZE, CDIKEY); for(int i = 0; i < CDI_KEY_SIZE; i++) - printf("%x",CDIKEY[i]); + printf("%hhx",CDIKEY[i]); printf(" : CDIKEY\n"); free(KEYIN); @@ -182,11 +182,32 @@ int _calcCDIKEY(uint8_t * CDIKEY) return RIOTSUCCESS; } + + + //firt generate ECC/RSA key. - Done ECC + //check for deterministic consistency - inconsistent + //seed RNGs with CDI + //let's see how it goes + + //add entropy source? + //seed RNG + //create ctx + //init + //gen keypair + + + int deriveECCKeyPair(mbedtls_mpi * SK, mbedtls_ecp_point * PK) { printf("inside deriveECCKeyPair layer1\n\n"); + int ret = 0; + unsigned char pubkeybuf[100]; + size_t pubkeysize; + char privkeybuf[100]; + size_t privkeysize; + mbedtls_ecp_group ecpGrp; mbedtls_ecp_group_init(&ecpGrp); mbedtls_ecp_group_load(&ecpGrp, ECC_CURVE); @@ -204,12 +225,58 @@ int deriveECCKeyPair(mbedtls_mpi * SK, mbedtls_ecp_point * PK) mbedtls_ctr_drbg_init(&drbgCtx); //Seed drbg with secret data now? + //move "private" string to n param + if(mbedtls_ctr_drbg_seed(&drbgCtx, mbedtls_entropy_func, &entropyCtx, + (const unsigned char *) "Private", sizeof("Private")) < 0) + { + perror("drbg seed failed\v"); + return RIOTFAILURE; + } - int ret = mbedtls_ctr_drbg_seed(&drbgCtx, mbedtls_entropy_func, &entropyCtx, - (const unsigned char *) "Private", sizeof("Private")); + if(mbedtls_ecp_gen_keypair(&ecpGrp, &secret, &Public, + mbedtls_ctr_drbg_random, &drbgCtx) <0) + { + perror("ECP gen keypair failed\n"); + return RIOTFAILURE; + } + + ret = mbedtls_ecp_tls_write_point(&ecpGrp, &Public, MBEDTLS_ECP_PF_UNCOMPRESSED, + &pubkeysize, pubkeybuf, sizeof(pubkeybuf)); + if(ret < 0) + { + perror("ECP write point failure\n"); + return RIOTFAILURE; + } + + //printf("%zu : pubkeysize\n", pubkeysize ); + for(int i = 0; i < pubkeysize; i++) + printf("%hhx",pubkeybuf[i]); + printf(" : PubKey\n"); + + // ret = mbedtls_mpi_write_binary(&secret, privkeybuf, 100); + // if(ret < 0) + // { + // printf("%d\n", ret); + // perror("MPI write point failure\n"); + // return RIOTFAILURE; + // } + + // for(int i = 0; i < 100; i++) + // printf("%x",privkeybuf[i]); + // printf(" : PrivKey\n\n\n"); + + ret = mbedtls_mpi_write_string(&secret, 16, privkeybuf, sizeof(privkeybuf), &privkeysize); + if(ret < 0) + { + printf("%d\n", ret); + perror("MPI write point to string failure\n"); + return RIOTFAILURE; + } + + //printf("%zu : privkeysize\n", privkeysize); + //for(int i = 0; i < privkeysize; i++) + printf("%s : PrivKey\n",privkeybuf); - ret = mbedtls_ecp_gen_keypair(&ecpGrp, &secret, &Public, - mbedtls_ctr_drbg_random, &drbgCtx); mbedtls_ecp_copy(PK, &Public); mbedtls_mpi_copy(SK, &secret); @@ -241,7 +308,7 @@ int deriveRSAKeyPair(void) mbedtls_ctr_drbg_init(&drbgCtx); //Seed drbg with secret data now? - + //move "private" string to n param int ret = mbedtls_ctr_drbg_seed(&drbgCtx, mbedtls_entropy_func, &entropyCtx, (const unsigned char *) "Private", sizeof("Private")); diff --git a/trial3/links.txt b/trial3/links.txt index 5613042..fad64b9 100644 --- a/trial3/links.txt +++ b/trial3/links.txt @@ -5,3 +5,17 @@ https://www.cryptopp.com/wiki/ /usr/include/crypto++/ /usr/share/doc/libcrypto++-dev/Readme.txt.gz + + + + + + + + +adding /dev/random to entropy - +mbedtls_entropy_add_source( &entropy, dev_random_entropy_poll, + NULL, DEV_RANDOM_THRESHOLD, + MBEDTLS_ENTROPY_SOURCE_STRONG ) ) != 0 ) + + \ No newline at end of file diff --git a/trial3/nbproject/private/configurations.xml b/trial3/nbproject/private/configurations.xml index a6a3f89..4eb20b6 100644 --- a/trial3/nbproject/private/configurations.xml +++ b/trial3/nbproject/private/configurations.xml @@ -6,90 +6,9 @@ - - - - aes.h - aesni.h - arc4.h - aria.h - asn1.h - asn1write.h - base64.h - bignum.h - blowfish.h - bn_mul.h - camellia.h - ccm.h - certs.h - chacha20.h - chachapoly.h - check_config.h - cipher.h - cipher_internal.h - cmac.h - compat-1.3.h - config.h - ctr_drbg.h - debug.h - des.h - dhm.h - ecdh.h - ecdsa.h - ecjpake.h - ecp.h - ecp_internal.h - entropy.h - entropy_poll.h - error.h - gcm.h - havege.h - hkdf.h - hmac_drbg.h - md.h - md2.h - md4.h - md5.h - md_internal.h - memory_buffer_alloc.h - net.h - net_sockets.h - nist_kw.h - oid.h - padlock.h - pem.h - pk.h - pk_internal.h - pkcs11.h - pkcs12.h - pkcs5.h - platform.h - platform_time.h - platform_util.h - poly1305.h - ripemd160.h - rsa.h - rsa_internal.h - sha1.h - sha256.h - sha512.h - ssl.h - ssl_cache.h - ssl_ciphersuites.h - ssl_cookie.h - ssl_internal.h - ssl_ticket.h - threading.h - timing.h - version.h - x509.h - x509_crl.h - x509_crt.h - x509_csr.h - xtea.h - + ECCtrial.c defines.h layer1.c layer1.h diff --git a/trial3/nbproject/private/private.xml b/trial3/nbproject/private/private.xml index 4f3fdc6..89b112f 100644 --- a/trial3/nbproject/private/private.xml +++ b/trial3/nbproject/private/private.xml @@ -7,4 +7,14 @@ 0 0 + + + + file:/home/atul/Projects/GIT/RIoT/openSSL-DICE/trial3/layer2.c + file:/home/atul/Projects/GIT/RIoT/openSSL-DICE/trial3/layer1.c + file:/home/atul/Projects/GIT/RIoT/openSSL-DICE/trial3/nbproject/private/launcher.properties + file:/home/atul/Projects/GIT/RIoT/openSSL-DICE/trial3/makefile + file:/home/atul/Projects/GIT/RIoT/openSSL-DICE/trial3/main.c + + diff --git a/trial3/out/main b/trial3/out/main index d6d2d27945cf6514df2cdda8a830f5c3b1db71ea..002440024c9ab86cd9ddffe2fc0de17a4f46170f 100755 GIT binary patch delta 6333 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 delta 5842 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