PLSSVM - Parallel Least Squares Support Vector Machine  2.0.0
A Least Squares Support Vector Machine implementation using different backends.
Public Member Functions | Static Private Member Functions | Static Private Attributes | List of all members
plssvm::detail::sha256 Class Reference

A hashing struct used for sha256 hashing. More...

#include <sha256.hpp>

Public Member Functions

std::string operator() (std::string input) const
 Calculate the sha256 hash for the input string. More...
 

Static Private Member Functions

template<typename T , std::enable_if_t< std::is_unsigned_v< T >, bool > = true>
static void unpack (const T x, unsigned char *str)
 Unpack the bits of x into the str. More...
 
static void pack32 (const unsigned char *str, std::uint32_t &x)
 Pack four byte of the str into the 32-bit unsigned integer x. More...
 
static std::uint32_t rotr32 (std::uint32_t value, unsigned int count)
 Rotate the bits in value @ count times to the right. More...
 

Static Private Attributes

static constexpr std::uint32_t DIGEST_SIZE = 256 / 8
 Number of bytes in the resulting digest.
 
static constexpr std::uint32_t CHUNK_SIZE = 512 / 8
 NUmber of bytes processed in one round (chunk).
 
static constexpr std::array< std::uint32_t, 64 > k_
 Array of the sha256 round constants. More...
 

Detailed Description

A hashing struct used for sha256 hashing.

Based on: https://en.wikipedia.org/wiki/SHA-2#Pseudocode

Member Function Documentation

◆ operator()()

std::string plssvm::detail::sha256::operator() ( std::string  input) const

Calculate the sha256 hash for the input string.

Parameters
[in]inputthe string to hash
Returns
the sha256 hash of input ([[nodiscard]])

◆ unpack()

template<typename T , std::enable_if_t< std::is_unsigned_v< T >, bool > = true>
static void plssvm::detail::sha256::unpack ( const T  x,
unsigned char *  str 
)
inlinestaticprivate

Unpack the bits of x into the str.

Template Parameters
Tthe unsigned type and, therefore, number of bits, to unpack
Parameters
[in]xthe integer representing the bits to unpack
[out]strthe string to unpack the bits to

◆ pack32()

static void plssvm::detail::sha256::pack32 ( const unsigned char *  str,
std::uint32_t &  x 
)
staticprivate

Pack four byte of the str into the 32-bit unsigned integer x.

Parameters
[in]strthe string to pack
[out]xthe 32-bit unsigned integer to pack the bytes to

◆ rotr32()

static std::uint32_t plssvm::detail::sha256::rotr32 ( std::uint32_t  value,
unsigned int  count 
)
staticprivate

Rotate the bits in value @ count times to the right.

Based on: https://en.wikipedia.org/wiki/Circular_shift

Parameters
[in]valuethe 32-bit integer to rotate
[in]countthe number of bits to rotate
Returns
the rotated 32-bit integer ([[nodiscard]])

Member Data Documentation

◆ k_

constexpr std::array<std::uint32_t, 64> plssvm::detail::sha256::k_
staticconstexprprivate
Initial value:
{
0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2
}

Array of the sha256 round constants.

First 32 bits of the fractional parts of the cube roots of the first 64 primes 2..311.


The documentation for this class was generated from the following file: