28#define ROTL32(v, n) _rotl((v), (n)) 
   29#define ROTL64(v, n) _rotl64((v), (n)) 
   31#define ROTR32(v, n) _rotr((v), (n)) 
   32#define ROTR64(v, n) _rotr64((v), (n)) 
   36#define U8V(v) ((uint8_t)(v)&0xFFU) 
   37#define U16V(v) ((uint16_t)(v)&0xFFFFU) 
   38#define U32V(v) ((uint32_t)(v)&0xFFFFFFFFU) 
   39#define U64V(v) ((uint64_t)(v)&0xFFFFFFFFFFFFFFFFU) 
   41#define ROTL32(v, n) (U32V((uint32_t)(v) << (n)) | ((uint32_t)(v) >> (32 - (n)))) 
   44#define ROTL64(v, n) (U64V((uint64_t)(v) << (n)) | ((uint64_t)(v) >> (64 - (n)))) 
   46#define ROTR32(v, n) ROTL32(v, 32 - (n)) 
   47#define ROTR64(v, n) ROTL64(v, 64 - (n)) 
   51#define ROTL8(v, n) (U8V((uint8_t)(v) << (n)) | ((uint8_t)(v) >> (8 - (n)))) 
   53#define ROTL16(v, n) (U16V((uint16_t)(v) << (n)) | ((uint16_t)(v) >> (16 - (n)))) 
   55#define ROTR8(v, n) ROTL8(v, 8 - (n)) 
   56#define ROTR16(v, n) ROTL16(v, 16 - (n)) 
   58#define SHA256_DIGEST_SIZE 32 
   73#define _SHA256_UNROLL2 
   77   p->state[0] = 0x6a09e667;
 
   78   p->state[1] = 0xbb67ae85;
 
   79   p->state[2] = 0x3c6ef372;
 
   80   p->state[3] = 0xa54ff53a;
 
   81   p->state[4] = 0x510e527f;
 
   82   p->state[5] = 0x9b05688c;
 
   83   p->state[6] = 0x1f83d9ab;
 
   84   p->state[7] = 0x5be0cd19;
 
   88#define S0(x) (ROTR32(x, 2) ^ ROTR32(x, 13) ^ ROTR32(x, 22)) 
   89#define S1(x) (ROTR32(x, 6) ^ ROTR32(x, 11) ^ ROTR32(x, 25)) 
   90#define s0(x) (ROTR32(x, 7) ^ ROTR32(x, 18) ^ (x >> 3)) 
   91#define s1(x) (ROTR32(x, 17) ^ ROTR32(x, 19) ^ (x >> 10)) 
   93#define blk0(i) (W[i] = data[i]) 
   94#define blk2(i) (W[i & 15] += s1(W[(i - 2) & 15]) + W[(i - 7) & 15] + s0(W[(i - 15) & 15])) 
   96#define Ch(x, y, z) (z ^ (x & (y ^ z))) 
   97#define Maj(x, y, z) ((x & y) | (z & (x | y))) 
   99#define a(i) T[(0 - (i)) & 7] 
  100#define b(i) T[(1 - (i)) & 7] 
  101#define c(i) T[(2 - (i)) & 7] 
  102#define d(i) T[(3 - (i)) & 7] 
  103#define e(i) T[(4 - (i)) & 7] 
  104#define f(i) T[(5 - (i)) & 7] 
  105#define g(i) T[(6 - (i)) & 7] 
  106#define h(i) T[(7 - (i)) & 7] 
  108#ifdef _SHA256_UNROLL2 
  110#define R(a, b, c, d, e, f, g, h, i)                              \ 
  111   h += S1(e) + Ch(e, f, g) + K[i + j] + (j ? blk2(i) : blk0(i)); \ 
  113   h += S0(a) + Maj(a, b, c) 
  116   R(a, b, c, d, e, f, g, h, i);       \ 
  117   R(h, a, b, c, d, e, f, g, (i + 1)); \ 
  118   R(g, h, a, b, c, d, e, f, (i + 2)); \ 
  119   R(f, g, h, a, b, c, d, e, (i + 3)); \ 
  120   R(e, f, g, h, a, b, c, d, (i + 4)); \ 
  121   R(d, e, f, g, h, a, b, c, (i + 5)); \ 
  122   R(c, d, e, f, g, h, a, b, (i + 6)); \ 
  123   R(b, c, d, e, f, g, h, a, (i + 7)) 
  128   h(i) += S1(e(i)) + Ch(e(i), f(i), g(i)) + K[i + j] + (j ? blk2(i) : blk0(i)); \ 
  130   h(i) += S0(a(i)) + Maj(a(i), b(i), c(i)) 
  148static const uint32_t 
K[64] = {
 
  149   0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
 
  150   0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
 
  151   0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
 
  152   0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
 
  153   0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
 
  154   0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
 
  155   0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
 
  156   0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2};
 
  160   uint32_t W[16] = {0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U};
 
  162#ifdef _SHA256_UNROLL2 
  174   for (j = 0; j < 8; j++)
 
  178   for (j = 0; j < 64; j += 16) {
 
  179#if defined(_SHA256_UNROLL) || defined(_SHA256_UNROLL2) 
  184      for (i = 0; i < 16; i++) {
 
  190#ifdef _SHA256_UNROLL2 
  200   for (j = 0; j < 8; j++)
 
  218   for (i = 0; i < 16; i++)
 
  219      data32[i] = ((uint32_t)(
p->buffer[i * 4]) << 24) + ((uint32_t)(
p->buffer[i * 4 + 1]) << 16) +
 
  220                  ((uint32_t)(
p->buffer[i * 4 + 2]) << 8) + ((uint32_t)(
p->buffer[i * 4 + 3]));
 
  226   uint32_t curBufferPos = (uint32_t)
p->count & 0x3F;
 
  228      p->buffer[curBufferPos++] = *
data++;
 
  231      if (curBufferPos == 64) {
 
  240   uint64_t lenInBits = (
p->count << 3);
 
  241   uint32_t curBufferPos = (uint32_t)
p->count & 0x3F;
 
  243   p->buffer[curBufferPos++] = 0x80;
 
  244   while (curBufferPos != (64 - 8)) {
 
  245      curBufferPos &= 0x3F;
 
  246      if (curBufferPos == 0)
 
  248      p->buffer[curBufferPos++] = 0;
 
  250   for (i = 0; i < 8; i++) {
 
  251      p->buffer[curBufferPos++] = (
unsigned char)(lenInBits >> 56);
 
  256   for (i = 0; i < 8; i++) {
 
  257      *digest++ = (
unsigned char)(
p->state[i] >> 24);
 
  258      *digest++ = (
unsigned char)(
p->state[i] >> 16);
 
  259      *digest++ = (
unsigned char)(
p->state[i] >> 8);
 
  260      *digest++ = (
unsigned char)(
p->state[i]);
 
size_t size(const MatrixT &matrix)
retrieve the size of a square matrix
 
unsigned long long ULong64_t
 
winID h TVirtualViewer3D TVirtualGLPainter p
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void data
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t UChar_t len
 
void sha256_update(sha256_t *p, const unsigned char *data, size_t size)
 
static void sha256_transform(uint32_t *state, const uint32_t *data)
 
static void sha256_write_byte_block(sha256_t *p)
 
static const uint32_t K[64]
 
void sha256_final(sha256_t *p, unsigned char *digest)
 
void sha256_init(sha256_t *p)
 
void sha256_hash(unsigned char *buf, const unsigned char *data, size_t size)
 
void Sha256(const unsigned char *data, int len, ULong64_t *fDigest)
 
This file contains a specialised ROOT message handler to test for diagnostic in unit tests.