c - Difference between 2 vs "\2" -


while trying implement ike session key generation algorithms came across following code snippets following algorithm implementation algorithm generating session key

skeyid_e = hmac (skeyid, skeyid_a || gxy || cky-i || cky-r || 2)

implementation last concatenation hmac of digit 2

hmac_update(ctx, (unsigned char *) "\2", 1)

here hmac_update api used concatenate buffer hmac before finalizing digest , ctx hmac context "\2" adding digit 2 , 1 size of buffer.

my question difference between , escaped unsigned char * "\2" , char/uint8_t value 2

the difference char numeric value 2 , string "\2" former char , second literal representing character array containing char numeric value 2 , char numeric value 0. in other words:

  • (char)2 single character. type char. value 2.
  • "\2" array of characters. type decays const char*. first entry 2 , second entry 0.

since hmac_update expects second argument pointer bytes use in update, can't provide 2 or (char)2 argument, since doing try convert integer pointer (oops). using "\2" solves problem providing pointer byte in question. this:

const char value = 2; hmac_update(ctx, &value, 1); 

Comments

Popular posts from this blog

account - Script error login visual studio DefaultLogin_PCore.js -

xcode - CocoaPod Storyboard error: -