From 3fb14de7ab6bf8c5d430567aaf6bbbcab77a1aab Mon Sep 17 00:00:00 2001 From: "atul.jha" Date: Thu, 18 Jun 2020 17:39:14 +0530 Subject: [PATCH] mbedtls extract CDI key working --- trial1/layer1.c | 6 +++--- trial1/layer2.c | 16 ++++++++-------- trial1/layer2.h | 7 ++++--- trial1/makefile | 2 +- trial2/include/hellomake.h | 1 - trial2/src/hellofunc.c | 9 --------- trial2/src/hellomake | Bin 8384 -> 0 bytes trial2/src/hellomake.c | 8 -------- trial2/src/makefile | 14 +++++++++----- trial2/src/obj/hellofunc.o | Bin 1560 -> 0 bytes trial2/src/obj/hellomake.o | Bin 1424 -> 0 bytes 11 files changed, 25 insertions(+), 38 deletions(-) delete mode 100644 trial2/include/hellomake.h delete mode 100644 trial2/src/hellofunc.c delete mode 100644 trial2/src/hellomake delete mode 100644 trial2/src/hellomake.c delete mode 100644 trial2/src/obj/hellofunc.o delete mode 100644 trial2/src/obj/hellomake.o diff --git a/trial1/layer1.c b/trial1/layer1.c index d61c72b..52697e2 100644 --- a/trial1/layer1.c +++ b/trial1/layer1.c @@ -65,7 +65,7 @@ int readUDS(uint8_t* UDS_M) BIO_printf(out,"%x,",UDSbuf[i]); BIO_printf(out, "\n"); - BIO_printf(out,"UDS digest : "); + BIO_printf(out,"UDS digest\t: "); for(i = 0; i < SHA256_DGST_SIZE; i++) BIO_printf(out,"%x",UDS_M[i]); BIO_printf(out, "\n"); @@ -109,7 +109,7 @@ int readFWID(uint8_t* FW_M) // BIO_printf(out,"%x,",source[i]); // BIO_printf(out, "\n"); - BIO_printf(out,"FW digest : "); + BIO_printf(out,"FW digest\t: "); for(i = 0; i < SHA256_DGST_SIZE; i++) BIO_printf(out,"%x",FW_M[i]); BIO_printf(out, "\n"); @@ -158,7 +158,7 @@ int calcCDID(uint8_t * UDS_M, uint8_t * FW_M, uint8_t * CDID) // BIO_printf(out,"%x",FW_M[i]); // BIO_printf(out, "\n"); - BIO_printf(out,"CDI : "); + BIO_printf(out,"CDI\t\t: "); for(int i = 0; i < SHA256_DGST_SIZE; i++) BIO_printf(out,"%x",CDID[i]); BIO_printf(out, "\n"); diff --git a/trial1/layer2.c b/trial1/layer2.c index 911278b..22b34bc 100644 --- a/trial1/layer2.c +++ b/trial1/layer2.c @@ -42,13 +42,13 @@ void startCDIProtocol() size_t KEY_LEN = KDF_KEY_SIZE; //need to pass pointer to the out key size, not the value - if(deriveKDF(KEY_OUT, &KEY_LEN, CD_ID, SHA256_DGST_SIZE, PASSPHRASE, lenofstr(PASSPHRASE))) + if(deriveKEY(KEY_OUT, &KEY_LEN, CD_ID, SHA256_DGST_SIZE, PASSPHRASE, lenofstr(PASSPHRASE))) printf("\n\nKDF call success\n");; - - for(int i = 0; i <= KDF_KEY_SIZE; i++) - printf("%x,",KEY_OUT[i]); - printf( " : KEY_OUT\n"); + printf( "KEY_OUT\t\t: "); + for(int i = 0; i < KDF_KEY_SIZE; i++) + printf("%x",KEY_OUT[i]); + printf( "\n"); //End block @@ -58,7 +58,7 @@ void startCDIProtocol() } -int deriveKDF(uint8_t * out, size_t * out_len, uint8_t * secret, int secret_len, unsigned char * passphrase, int pass_len) +int deriveKEY(uint8_t * out, size_t * out_len, uint8_t * secret, int secret_len, unsigned char * passphrase, int pass_len) { //create comtext //ctx set params @@ -80,7 +80,7 @@ int deriveKDF(uint8_t * out, size_t * out_len, uint8_t * secret, int secret_len, //uint8_t * OUT = calloc(1,sizeof(uint8_t)*KDF_KEY_SIZE); //size_t keylen = KDF_KEY_SIZE; - uint8_t salt[32] = {0x31,0xe2,0x3e,0xcc,0x28,0xc5,0x7b,0xbb,0x38,0x7d,0xe6,0x66,0xbb, + uint8_t salt[32] = {0x30,0xe2,0x3e,0xcc,0x28,0xc5,0x7b,0xbb,0x38,0x7d,0xe6,0x66,0xbb, 0xbe,0x67,0x0a,0xf8,0xf3,0x92,0x0e,0xba,0x68,0xd1,0x56,0xea,0x34,0x3f,0xbc,0x4f, 0xf1,0xd9,0x1e}; @@ -90,7 +90,7 @@ int deriveKDF(uint8_t * out, size_t * out_len, uint8_t * secret, int secret_len, perror("pkey init failed:"); // if (EVP_PKEY_CTX_hkdf_mode(pctx,EVP_PKEY_HKDEF_MODE_EXPAND_ONLY ) <= 0) //perror("set message mode failed:"); - if (EVP_PKEY_CTX_set_hkdf_md(pctx, EVP_sha256()) <= 0) + if (EVP_PKEY_CTX_set_hkdf_md(pctx, KDF_ALG) <= 0) perror("set message digest failed:"); if (EVP_PKEY_CTX_set1_hkdf_salt(pctx, salt, sizeof(salt)) <= 0) perror("set salt failed:"); diff --git a/trial1/layer2.h b/trial1/layer2.h index 296d8a8..f2c22dd 100644 --- a/trial1/layer2.h +++ b/trial1/layer2.h @@ -7,17 +7,18 @@ #define SHA256_DGST_SIZE 32 //bytes #define PASSPHRASE "Identity" -#define KDF_KEY_SIZE 32 +#define KDF_KEY_SIZE 32 //bytes #define KDF_ALG EVP_sha256() #define EC_KEY_SIZE 32 +#define EC_CURVE NID_secp224r1 #define lenofstr(a) (sizeof(a)-1) void startCDIProtocol(); -int deriveKDF(uint8_t * out, size_t * out_len, uint8_t * secret, int secret_len, unsigned char * passphrase, int pass_len); -int deriveECC_Key(); +int deriveKEY(uint8_t * out, size_t * out_len, uint8_t * secret, int secret_len, unsigned char * passphrase, int pass_len); +int deriveECC_KeyPair(); int deriveDEVICE_Key(); int deriveALIAS_key(); int genDEVICE_cert(); diff --git a/trial1/makefile b/trial1/makefile index 526d6ba..c72a3f2 100644 --- a/trial1/makefile +++ b/trial1/makefile @@ -18,6 +18,6 @@ debug: ${CC} -g -o $(ODIR)/dbg-main main.c layer1.c layer2.c -lssl -lcrypto clean: - rm -r $(ODIR)/* + rm -r $(ODIR)/* !("RANDFILE") rm -r ./keys/* diff --git a/trial2/include/hellomake.h b/trial2/include/hellomake.h deleted file mode 100644 index fccca1b..0000000 --- a/trial2/include/hellomake.h +++ /dev/null @@ -1 +0,0 @@ -void myPrintHelloMake(void); diff --git a/trial2/src/hellofunc.c b/trial2/src/hellofunc.c deleted file mode 100644 index 356ffa7..0000000 --- a/trial2/src/hellofunc.c +++ /dev/null @@ -1,9 +0,0 @@ -#include -#include - -void myPrintHelloMake(void) { - - printf("Hello makefiles!\n"); - - return; -} diff --git a/trial2/src/hellomake b/trial2/src/hellomake deleted file mode 100644 index 390cb17f8eb56c1e9d9646d6266a3ebcc49e2e45..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8384 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 S%DHl7{THMIK3BMlSN~r$VK*QE diff --git a/trial2/src/hellomake.c b/trial2/src/hellomake.c deleted file mode 100644 index 3d673b7..0000000 --- a/trial2/src/hellomake.c +++ /dev/null @@ -1,8 +0,0 @@ -#include - -int main() { - // call a function in another file - myPrintHelloMake(); - - return(0); -} diff --git a/trial2/src/makefile b/trial2/src/makefile index 95561df..e92c0fb 100644 --- a/trial2/src/makefile +++ b/trial2/src/makefile @@ -1,3 +1,4 @@ + IDIR =../include CC=gcc CFLAGS=-I$(IDIR) @@ -5,22 +6,25 @@ CFLAGS=-I$(IDIR) ODIR=obj LDIR =../lib -LIBS=-lm +LIBS=-lm -lmbedcrypto -lmbedtls -lmbedx509 -_DEPS = hellomake.h +_DEPS = functions.h ROMfunctions.h DEPS = $(patsubst %,$(IDIR)/%,$(_DEPS)) -_OBJ = hellomake.o hellofunc.o +_OBJ = main.o functions.o ROMfunctions.o OBJ = $(patsubst %,$(ODIR)/%,$(_OBJ)) $(ODIR)/%.o: %.c $(DEPS) $(CC) -c -o $@ $< $(CFLAGS) -hellomake: $(OBJ) +main: $(OBJ) $(CC) -o $@ $^ $(CFLAGS) $(LIBS) -.PHONY: clean +debug: $(OBJ) + $(CC) -g -o $@ $^ $(CFLAGS) $(LIBS) + +.PHONY: clean main debug clean: rm -f $(ODIR)/*.o *~ core $(INCDIR)/*~ diff --git a/trial2/src/obj/hellofunc.o b/trial2/src/obj/hellofunc.o deleted file mode 100644 index 7f46741ce2374a944b437a085dec346f62deafc0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1560 zcmbtT&1(};5TDIzKQxi}aVS(|y+{T7$U?v>RPsSS4zZQCK`*jw(hVuiZp!XkXg%mn z=%JAR$%}u2|A5e|ccIQ?-_Yml=Ayswc4mHWX5P%3moKeeyI@(su;2|`Tg(FdC|v8c zxmtq~6rtZe|Jl9RCgzepvyb1p!DKRZLjO1z9ZiDdDL|*$eC=%X2Wccz=cTBM%BGvn zE%&p#B`Q_nKF@e~L`e|Vr#-Mv%hq~vd1ZzLJw}ce;URtM_sU-j&C=2iI*`2p)XOdS zb(Obm=XMHU<1Y_3X3B#NxASPsvb=!Luh@pA8~!C^9%yyWdq?gGuJR3Ufa(Gs#x#{t z8V$t|!n1erQ6%SsdW&-cuhZLY)O+4;yS?8!@DA#YUdw}%R3>}`cS6sAy8V5Xp{N|_ zX6|adqj>Vyo(_OW&O+%AP|7%yW7gte;tLs^N)U&>^g#@g1VlW|jNvp4g9!JcsSHGC zr@xsQQ6nO_F zox?9;P4UkZZ@$ERwQmZ_q2mP_l=ENXU5urif6WeUKL0-II?VH5;U;n1C;J{Mh3eD6 z@hls-$-3@0(+y2Gec!8ivwn`>(qc*F`)7I&mAv_VPziZXG(U>vc;=}d^K7KxJADw2 mDwzH=tGLW~;>_701(zz0?pKG|Kg}mE{zMh!>%pj-@qYmB=5DC~ diff --git a/trial2/src/obj/hellomake.o b/trial2/src/obj/hellomake.o deleted file mode 100644 index 2526b2ea2aac30666c297207cf70b8e02cc26384..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1424 zcmbVL&r1SP5T4b_eq+%gsDr04sD}$d@!9HjLaA^a&MFoq}%tIUR%k zmY{3*pk~%LxxThbBl~9Nd-J`SH*dVlmkJTX02Tu_pyx3P@D%CU8Q;vnIE+DM>+$WK z{AXHDUZI%Fr4z|Ywd2W7VpXh&)Uw&}J@eLF6R8zpE_QJuz>L2F7}p12T*i&L@!0Sa z7BG)EeI#*OvXk+LNN!?i2Ls6eL#Xxv`1lIjj)vY0Ad0^*iQ-9N5{02K7*C1)fe-$| zClHwq)Z^dL$JBi_MiPCF>D#J1jYiY8FC0+=*FN{aDwfKd*^*T*6b|!8)=_q|l()dW z+HakEa*LvOF`Ccd%IKz}_4@T9Ww|Zw+64$d+^JhWC3WV1`KHRB(h_lgIzK3!pLH5H*$&3t z1f77b$CeepZ)Om?SDZDaS#kf^-$o;>|Fa?er+*vsx&Ks;o}12orUhkK6-={ET%Awv es`nltcu~A{asr~?e+u`)_$gJ?aezyv&i@8QA6jDo