1 /* Copyright (c) 2015 Cryptography Research, Inc.
2 * Released under the MIT License. See LICENSE.txt for license information.
8 * @brief Decaf utility functions.
11 #include <decaf/common.h>
17 #ifdef __STDC_LIB_EXT1__
18 memset_s(s, size, 0, size);
20 const size_t sw = sizeof(decaf_word_t);
21 volatile uint8_t *destroy = (volatile uint8_t *)s;
22 for (; size && ((uintptr_t)destroy)%sw; size--, destroy++)
24 for (; size >= sw; size -= sw, destroy += sw)
25 *(volatile decaf_word_t *)destroy = 0;
26 for (; size; size--, destroy++)
31 decaf_bool_t decaf_memeq (
36 const unsigned char *data1 = (const unsigned char *)data1_;
37 const unsigned char *data2 = (const unsigned char *)data2_;
38 unsigned char ret = 0;
39 for (; size; size--, data1++, data2++) {
40 ret |= *data1 ^ *data2;
42 return (((decaf_dword_t)ret) - 1) >> 8;