7#ifndef BOTAN_SHA1_FN_H_
8#define BOTAN_SHA1_FN_H_
10#include <botan/types.h>
11#include <botan/internal/bit_ops.h>
12#include <botan/internal/rotate.h>
16constexpr uint32_t
K1 = 0x5A827999;
17constexpr uint32_t
K2 = 0x6ED9EBA1;
18constexpr uint32_t
K3 = 0x8F1BBCDC;
19constexpr uint32_t
K4 = 0xCA62C1D6;
21inline void F1(uint32_t A, uint32_t& B, uint32_t C, uint32_t D, uint32_t& E, uint32_t M) {
26inline void F2(uint32_t A, uint32_t& B, uint32_t C, uint32_t D, uint32_t& E, uint32_t M) {
27 E += (B ^ C ^ D) + M +
rotl<5>(A);
31inline void F3(uint32_t A, uint32_t& B, uint32_t C, uint32_t D, uint32_t& E, uint32_t M) {
37inline void F4(uint32_t A, uint32_t& B, uint32_t C, uint32_t D, uint32_t& E, uint32_t M) {
38 E += (B ^ C ^ D) + M +
rotl<5>(A);
void F2(uint32_t A, uint32_t &B, uint32_t C, uint32_t D, uint32_t &E, uint32_t M)
void F4(uint32_t A, uint32_t &B, uint32_t C, uint32_t D, uint32_t &E, uint32_t M)
void F3(uint32_t A, uint32_t &B, uint32_t C, uint32_t D, uint32_t &E, uint32_t M)
void F1(uint32_t A, uint32_t &B, uint32_t C, uint32_t D, uint32_t &E, uint32_t M)
BOTAN_FORCE_INLINE constexpr T majority(T a, T b, T c)
BOTAN_FORCE_INLINE constexpr T rotl(T input)
BOTAN_FORCE_INLINE constexpr T choose(T mask, T a, T b)