blob: ffa79f270f9088d4bf9e26c6293cf826c68ec943 [file] [log] [blame]
/* Copyright 2021 The Chromium OS Authors. All rights reserved.
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*
* Constants & macro for sha algorithms.
*/
#ifndef VBOOT_REFERENCE_2SHA_PRIVATE_H_
#define VBOOT_REFERENCE_2SHA_PRIVATE_H_
/* Sha256 padding is consisted of 0x80 + zeros + length of message (8 byte).
* So minimum length for padding is 9.
*/
#define SHA256_MIN_PAD_LEN 9
/* Beginning of sha256 padding is always 0x80 when messages are in bytes
*/
#define SHA256_PAD_BEGIN 0x80
extern const uint32_t vb2_sha256_h0[8];
extern const uint32_t vb2_sha256_k[64];
#define UNPACK32(x, str) \
{ \
*((str) + 3) = (uint8_t) ((x) ); \
*((str) + 2) = (uint8_t) ((x) >> 8); \
*((str) + 1) = (uint8_t) ((x) >> 16); \
*((str) + 0) = (uint8_t) ((x) >> 24); \
}
#define PACK32(str, x) \
{ \
*(x) = ((uint32_t) *((str) + 3) ) \
| ((uint32_t) *((str) + 2) << 8) \
| ((uint32_t) *((str) + 1) << 16) \
| ((uint32_t) *((str) + 0) << 24); \
}
#endif /* VBOOT_REFERENCE_2SHA_PRIVATE_H_ */