# generate M1,M2,M3 for SHE spec example
setenv KEY_NEW          $1
setenv KEY_UPDATE_ENC_C 010153484500800000000000000000b0
setenv KEY_UPDATE_MAC_C 010253484500800000000000000000b0
setenv K_AUTHID         $2 # may be MASTER_ECU_KEY
setenv UID              $3
setenv IV               00000000000000000000000000000000
setenv ID               $4 #(KEY_1)
setenv AUTHID           $5 # (MASTER_ECU_KEY)
setenv CID              $6 # 7 nibbleS
setenv FID              $7 # WP | BP | DP | KU | WC | 3b0 # 2 nibbles
                           #2345678901234567890123456789012 
setenv PADDING_ZEROS_92    00000000000000000000000
                            #2345678901234567890123456789012 
setenv CID_PAD    8000000000000000000000000

setenv K1 `../bin/AES_MP_KDF_CMD.exe $K_AUTHID $KEY_UPDATE_ENC_C`
setenv K2 `../bin/AES_MP_KDF_CMD.exe $K_AUTHID $KEY_UPDATE_MAC_C`


#echo ID $4 K1 is  $K1 
#echo ID $4 Kauth is  $K_AUTHID
#echo ID $4 K2 is  $K2 

setenv M1 $UID$ID$AUTHID
#echo ID $4 M1 is  $M1
echo M1 ID $4 $M1

setenv M2_INPUT_LINE1 $CID$FID$PADDING_ZEROS_92
setenv M2_INPUT_LINE2 $KEY_NEW

echo $M2_INPUT_LINE1 > m2_input
echo $M2_INPUT_LINE2 >> m2_input

../bin/AES_ENC_CBC_CMD.exe  $K1 $IV m2_input > M2
#echo ID $4 M2 is `cat M2`
echo M2 ID $4 `cat M2`

echo $M1 > m3_input
cat M2 >> m3_input
setenv M3 `../bin/AES_CMAC_CMD.exe $K2 384 m3_input`
#echo ID $4 M3 is $M3
echo M3 ID $4 $M3

#echo  key_new $KEY_NEW
#echo constant $KEY_UPDATE_ENC_C
setenv K3 `../bin/AES_MP_KDF_CMD.exe $KEY_NEW $KEY_UPDATE_ENC_C`
#echo ID $4 K3 is $K3

setenv K4 `../bin/AES_MP_KDF_CMD.exe $KEY_NEW $KEY_UPDATE_MAC_C`
#echo ID $4 K4 is $K4

setenv M4_star_input $CID$CID_PAD 
#echo M4_star_input $M4_star_input
setenv M4_star `../bin/AES_ENC_ECB_CMD.exe  $K3 $M4_star_input`
setenv M4_line1 $UID$ID$AUTHID
setenv M4_line2 $M4_star
echo $M4_line1 > M4
echo $M4_line2 >> M4
#echo ID $4 M4 is  `cat M4`
echo M4 ID $4 `cat M4`

setenv M5 `../bin/AES_CMAC_CMD.exe $K4 256 M4`
#echo ID $4 M5 is $M5
echo M5 ID $4 $M5

#clean up the mess!
rm M2 m2_input m3_input M4

