NaCl: Networking and Cryptography library |
![]() Computer Aided Cryptography Engineering |
![]() ECRYPT II |
|
String comparison: crypto_verifyC NaCl provides a crypto_verify_16 function callable as follows:
#include "crypto_verify_16.h"
const unsigned char x[16];
const unsigned char y[16];
crypto_verify_16(x,y);
The crypto_verify_16 function returns 0
if x[0], x[1], ..., x[15]
are the same as y[0], y[1], ..., y[15].
Otherwise it returns -1.
This function is safe to use for secrets x[0], x[1], ..., x[15], y[0], y[1], ..., y[15]. The time taken by crypto_verify_16 is independent of the contents of x[0], x[1], ..., x[15], y[0], y[1], ..., y[15]. In contrast, the standard C comparison function memcmp(x,y,16) takes time that depends on the longest matching prefix of x and y, often allowing easy timing attacks. C NaCl also provides a similar crypto_verify_32 function. VersionThis is version 2010.03.09 of the verify.html web page. |