firmware/stm32/bootloader/constant_time.h
2020-11-18 14:19:14 -05:00

29 lines
659 B
C

/*
* (c) Copyright 2018 by Coinkite Inc. This file is covered by license found in COPYING-CC.
*/
#pragma once
#include <stdbool.h>
#include <stdint.h>
//
// Constant-time functions, useful for crypto checking.
//
// Return T if all bytes are 0xff
bool check_all_ones(const void *ptrV, int len);
// Return T if all bytes are 0x00
bool check_all_zeros(const void *ptrV, int len);
// Equality check.
bool check_equal(const void *aV, const void *bV, int len);
// XOR-mixin more bytes; acc = acc XOR more for each byte
void static inline xor_mixin(uint8_t *acc, const uint8_t *more, int len)
{
for(; len; len--, more++, acc++) {
*(acc) ^= *(more);
}
}