linux/crypto/sha256_generic.c
<<
>>
Prefs
   1/*
   2 * Cryptographic API.
   3 *
   4 * SHA-256, as specified in
   5 * http://csrc.nist.gov/cryptval/shs/sha256-384-512.pdf
   6 *
   7 * SHA-256 code by Jean-Luc Cooke <jlcooke@certainkey.com>.
   8 *
   9 * Copyright (c) Jean-Luc Cooke <jlcooke@certainkey.com>
  10 * Copyright (c) Andrew McDonald <andrew@mcdonald.org.uk>
  11 * Copyright (c) 2002 James Morris <jmorris@intercode.com.au>
  12 * SHA224 Support Copyright 2007 Intel Corporation <jonathan.lynch@intel.com>
  13 *
  14 * This program is free software; you can redistribute it and/or modify it
  15 * under the terms of the GNU General Public License as published by the Free
  16 * Software Foundation; either version 2 of the License, or (at your option) 
  17 * any later version.
  18 *
  19 */
  20#include <linux/init.h>
  21#include <linux/module.h>
  22#include <linux/mm.h>
  23#include <linux/crypto.h>
  24#include <linux/types.h>
  25#include <crypto/sha.h>
  26#include <asm/byteorder.h>
  27
  28struct sha256_ctx {
  29        u32 count[2];
  30        u32 state[8];
  31        u8 buf[128];
  32};
  33
  34static inline u32 Ch(u32 x, u32 y, u32 z)
  35{
  36        return z ^ (x & (y ^ z));
  37}
  38
  39static inline u32 Maj(u32 x, u32 y, u32 z)
  40{
  41        return (x & y) | (z & (x | y));
  42}
  43
  44#define e0(x)       (ror32(x, 2) ^ ror32(x,13) ^ ror32(x,22))
  45#define e1(x)       (ror32(x, 6) ^ ror32(x,11) ^ ror32(x,25))
  46#define s0(x)       (ror32(x, 7) ^ ror32(x,18) ^ (x >> 3))
  47#define s1(x)       (ror32(x,17) ^ ror32(x,19) ^ (x >> 10))
  48
  49static inline void LOAD_OP(int I, u32 *W, const u8 *input)
  50{
  51        W[I] = __be32_to_cpu( ((__be32*)(input))[I] );
  52}
  53
  54static inline void BLEND_OP(int I, u32 *W)
  55{
  56        W[I] = s1(W[I-2]) + W[I-7] + s0(W[I-15]) + W[I-16];
  57}
  58
  59static void sha256_transform(u32 *state, const u8 *input)
  60{
  61        u32 a, b, c, d, e, f, g, h, t1, t2;
  62        u32 W[64];
  63        int i;
  64
  65        /* load the input */
  66        for (i = 0; i < 16; i++)
  67                LOAD_OP(i, W, input);
  68
  69        /* now blend */
  70        for (i = 16; i < 64; i++)
  71                BLEND_OP(i, W);
  72    
  73        /* load the state into our registers */
  74        a=state[0];  b=state[1];  c=state[2];  d=state[3];
  75        e=state[4];  f=state[5];  g=state[6];  h=state[7];
  76
  77        /* now iterate */
  78        t1 = h + e1(e) + Ch(e,f,g) + 0x428a2f98 + W[ 0];
  79        t2 = e0(a) + Maj(a,b,c);    d+=t1;    h=t1+t2;
  80        t1 = g + e1(d) + Ch(d,e,f) + 0x71374491 + W[ 1];
  81        t2 = e0(h) + Maj(h,a,b);    c+=t1;    g=t1+t2;
  82        t1 = f + e1(c) + Ch(c,d,e) + 0xb5c0fbcf + W[ 2];
  83        t2 = e0(g) + Maj(g,h,a);    b+=t1;    f=t1+t2;
  84        t1 = e + e1(b) + Ch(b,c,d) + 0xe9b5dba5 + W[ 3];
  85        t2 = e0(f) + Maj(f,g,h);    a+=t1;    e=t1+t2;
  86        t1 = d + e1(a) + Ch(a,b,c) + 0x3956c25b + W[ 4];
  87        t2 = e0(e) + Maj(e,f,g);    h+=t1;    d=t1+t2;
  88        t1 = c + e1(h) + Ch(h,a,b) + 0x59f111f1 + W[ 5];
  89        t2 = e0(d) + Maj(d,e,f);    g+=t1;    c=t1+t2;
  90        t1 = b + e1(g) + Ch(g,h,a) + 0x923f82a4 + W[ 6];
  91        t2 = e0(c) + Maj(c,d,e);    f+=t1;    b=t1+t2;
  92        t1 = a + e1(f) + Ch(f,g,h) + 0xab1c5ed5 + W[ 7];
  93        t2 = e0(b) + Maj(b,c,d);    e+=t1;    a=t1+t2;
  94
  95        t1 = h + e1(e) + Ch(e,f,g) + 0xd807aa98 + W[ 8];
  96        t2 = e0(a) + Maj(a,b,c);    d+=t1;    h=t1+t2;
  97        t1 = g + e1(d) + Ch(d,e,f) + 0x12835b01 + W[ 9];
  98        t2 = e0(h) + Maj(h,a,b);    c+=t1;    g=t1+t2;
  99        t1 = f + e1(c) + Ch(c,d,e) + 0x243185be + W[10];
 100        t2 = e0(g) + Maj(g,h,a);    b+=t1;    f=t1+t2;
 101        t1 = e + e1(b) + Ch(b,c,d) + 0x550c7dc3 + W[11];
 102        t2 = e0(f) + Maj(f,g,h);    a+=t1;    e=t1+t2;
 103        t1 = d + e1(a) + Ch(a,b,c) + 0x72be5d74 + W[12];
 104        t2 = e0(e) + Maj(e,f,g);    h+=t1;    d=t1+t2;
 105        t1 = c + e1(h) + Ch(h,a,b) + 0x80deb1fe + W[13];
 106        t2 = e0(d) + Maj(d,e,f);    g+=t1;    c=t1+t2;
 107        t1 = b + e1(g) + Ch(g,h,a) + 0x9bdc06a7 + W[14];
 108        t2 = e0(c) + Maj(c,d,e);    f+=t1;    b=t1+t2;
 109        t1 = a + e1(f) + Ch(f,g,h) + 0xc19bf174 + W[15];
 110        t2 = e0(b) + Maj(b,c,d);    e+=t1;    a=t1+t2;
 111
 112        t1 = h + e1(e) + Ch(e,f,g) + 0xe49b69c1 + W[16];
 113        t2 = e0(a) + Maj(a,b,c);    d+=t1;    h=t1+t2;
 114        t1 = g + e1(d) + Ch(d,e,f) + 0xefbe4786 + W[17];
 115        t2 = e0(h) + Maj(h,a,b);    c+=t1;    g=t1+t2;
 116        t1 = f + e1(c) + Ch(c,d,e) + 0x0fc19dc6 + W[18];
 117        t2 = e0(g) + Maj(g,h,a);    b+=t1;    f=t1+t2;
 118        t1 = e + e1(b) + Ch(b,c,d) + 0x240ca1cc + W[19];
 119        t2 = e0(f) + Maj(f,g,h);    a+=t1;    e=t1+t2;
 120        t1 = d + e1(a) + Ch(a,b,c) + 0x2de92c6f + W[20];
 121        t2 = e0(e) + Maj(e,f,g);    h+=t1;    d=t1+t2;
 122        t1 = c + e1(h) + Ch(h,a,b) + 0x4a7484aa + W[21];
 123        t2 = e0(d) + Maj(d,e,f);    g+=t1;    c=t1+t2;
 124        t1 = b + e1(g) + Ch(g,h,a) + 0x5cb0a9dc + W[22];
 125        t2 = e0(c) + Maj(c,d,e);    f+=t1;    b=t1+t2;
 126        t1 = a + e1(f) + Ch(f,g,h) + 0x76f988da + W[23];
 127        t2 = e0(b) + Maj(b,c,d);    e+=t1;    a=t1+t2;
 128
 129        t1 = h + e1(e) + Ch(e,f,g) + 0x983e5152 + W[24];
 130        t2 = e0(a) + Maj(a,b,c);    d+=t1;    h=t1+t2;
 131        t1 = g + e1(d) + Ch(d,e,f) + 0xa831c66d + W[25];
 132        t2 = e0(h) + Maj(h,a,b);    c+=t1;    g=t1+t2;
 133        t1 = f + e1(c) + Ch(c,d,e) + 0xb00327c8 + W[26];
 134        t2 = e0(g) + Maj(g,h,a);    b+=t1;    f=t1+t2;
 135        t1 = e + e1(b) + Ch(b,c,d) + 0xbf597fc7 + W[27];
 136        t2 = e0(f) + Maj(f,g,h);    a+=t1;    e=t1+t2;
 137        t1 = d + e1(a) + Ch(a,b,c) + 0xc6e00bf3 + W[28];
 138        t2 = e0(e) + Maj(e,f,g);    h+=t1;    d=t1+t2;
 139        t1 = c + e1(h) + Ch(h,a,b) + 0xd5a79147 + W[29];
 140        t2 = e0(d) + Maj(d,e,f);    g+=t1;    c=t1+t2;
 141        t1 = b + e1(g) + Ch(g,h,a) + 0x06ca6351 + W[30];
 142        t2 = e0(c) + Maj(c,d,e);    f+=t1;    b=t1+t2;
 143        t1 = a + e1(f) + Ch(f,g,h) + 0x14292967 + W[31];
 144        t2 = e0(b) + Maj(b,c,d);    e+=t1;    a=t1+t2;
 145
 146        t1 = h + e1(e) + Ch(e,f,g) + 0x27b70a85 + W[32];
 147        t2 = e0(a) + Maj(a,b,c);    d+=t1;    h=t1+t2;
 148        t1 = g + e1(d) + Ch(d,e,f) + 0x2e1b2138 + W[33];
 149        t2 = e0(h) + Maj(h,a,b);    c+=t1;    g=t1+t2;
 150        t1 = f + e1(c) + Ch(c,d,e) + 0x4d2c6dfc + W[34];
 151        t2 = e0(g) + Maj(g,h,a);    b+=t1;    f=t1+t2;
 152        t1 = e + e1(b) + Ch(b,c,d) + 0x53380d13 + W[35];
 153        t2 = e0(f) + Maj(f,g,h);    a+=t1;    e=t1+t2;
 154        t1 = d + e1(a) + Ch(a,b,c) + 0x650a7354 + W[36];
 155        t2 = e0(e) + Maj(e,f,g);    h+=t1;    d=t1+t2;
 156        t1 = c + e1(h) + Ch(h,a,b) + 0x766a0abb + W[37];
 157        t2 = e0(d) + Maj(d,e,f);    g+=t1;    c=t1+t2;
 158        t1 = b + e1(g) + Ch(g,h,a) + 0x81c2c92e + W[38];
 159        t2 = e0(c) + Maj(c,d,e);    f+=t1;    b=t1+t2;
 160        t1 = a + e1(f) + Ch(f,g,h) + 0x92722c85 + W[39];
 161        t2 = e0(b) + Maj(b,c,d);    e+=t1;    a=t1+t2;
 162
 163        t1 = h + e1(e) + Ch(e,f,g) + 0xa2bfe8a1 + W[40];
 164        t2 = e0(a) + Maj(a,b,c);    d+=t1;    h=t1+t2;
 165        t1 = g + e1(d) + Ch(d,e,f) + 0xa81a664b + W[41];
 166        t2 = e0(h) + Maj(h,a,b);    c+=t1;    g=t1+t2;
 167        t1 = f + e1(c) + Ch(c,d,e) + 0xc24b8b70 + W[42];
 168        t2 = e0(g) + Maj(g,h,a);    b+=t1;    f=t1+t2;
 169        t1 = e + e1(b) + Ch(b,c,d) + 0xc76c51a3 + W[43];
 170        t2 = e0(f) + Maj(f,g,h);    a+=t1;    e=t1+t2;
 171        t1 = d + e1(a) + Ch(a,b,c) + 0xd192e819 + W[44];
 172        t2 = e0(e) + Maj(e,f,g);    h+=t1;    d=t1+t2;
 173        t1 = c + e1(h) + Ch(h,a,b) + 0xd6990624 + W[45];
 174        t2 = e0(d) + Maj(d,e,f);    g+=t1;    c=t1+t2;
 175        t1 = b + e1(g) + Ch(g,h,a) + 0xf40e3585 + W[46];
 176        t2 = e0(c) + Maj(c,d,e);    f+=t1;    b=t1+t2;
 177        t1 = a + e1(f) + Ch(f,g,h) + 0x106aa070 + W[47];
 178        t2 = e0(b) + Maj(b,c,d);    e+=t1;    a=t1+t2;
 179
 180        t1 = h + e1(e) + Ch(e,f,g) + 0x19a4c116 + W[48];
 181        t2 = e0(a) + Maj(a,b,c);    d+=t1;    h=t1+t2;
 182        t1 = g + e1(d) + Ch(d,e,f) + 0x1e376c08 + W[49];
 183        t2 = e0(h) + Maj(h,a,b);    c+=t1;    g=t1+t2;
 184        t1 = f + e1(c) + Ch(c,d,e) + 0x2748774c + W[50];
e) + 0x274877429="+cod6(ref">t2 = e0(g) + Maj(g,h,a);    b+=t1;    f=t1+W[46];
 156        t1 = e + e1(b) + Ch(b,h,f) + 0xa81a664b + t2;
 157        t2 = e0(f) + Maj(f,g,h);    a+=t1;    e=t1+W[47];
 158        t1 = d + e1(a) + Ch(a,c,e) + 0xc24b8b70 + t2;
 159        t2 = e0(e) + Maj(e,f,g);    h+=t1;    d=t1+ 179
 180        t1 = c + e1(h) + Ch(h,g,d) + 0xc76c51a3 + W[48];
 181        t2 = e0(d) + Maj(d,e,f);    g+=t1;    c=t1+t2;
 182        t1 = b + e1(g) + Ch(g,g,c) + 0xd192e819 + W[49];
 183        t2 = e0(c) + Maj(c,d,e);    f+=t1;    b=t1+t2;
 184        t1 = a + e1(f) + Ch(f,b,b) + 0xd6990624 + W[50];
e) + 0x274877429="+cod6(ref">t2 = e0(b) + Maj(b,c,d);    e+=t1;    a=t1+W[46];
t1+t2;
 177        t1 = h + e1(e) + Ch(e,h,a) + 0xf40e3585 + W[47];
 178        t2 = e0(a) + Maj(a,b,c);    d+=t1;    h=t1+t2;
 169        t1 = g + e1(d) + Ch(d,g,h) + 0x106aa070 + t2;
<20as> 20arypto/sha256_generic.c#L178" id="L178" class="line" name="L178"> 178        t2 = e0(h) + Maj(h,a,b);    c+=t1;    g=t1+W[48];
<20as> 20crypto/sha256_generic.c#L171" id="L171" class="line" name="L171"> 171        t1 = f + e1(c) + Ch(c,a,g) + 0x19a4c116 + t2;
<20 c> 20crypto/sha256_generic.c#L172" id="L172" class="line" name="L172"> 172        t2 = e0(g) + Maj(g,h,a);    b+=t1;    f=t1+W[49];
<20as> 20crypto/sha256_generic.c#L173" id="L173" class="line" name="L173"> 173        t1 = e + e1(b) + Ch(b,e,f) + 0x1e376c08 + t2;
<20 c> 20crypto/sha256_generic.c#L174" id="L174" class="line" name="L174"> 174        t2 = e0(f) + Maj(f,g,h);    a+=t1;    e=t1+W[50];
<20as> 20crypto/sha256_generic.c#L175" id="L175" class="line" name="L175"> 175        t1 = d + e1(a) + Ch(a,g,e) + 0x2748774c + W[46];
<20as> 20crypto/sha256_generic.c#L176" id="L176" class="line" name="L176"> 176        t2 = e0(e) + Maj(e,f,g);    h+=t1;    d=t1+t2;
<20 c> 20crypto/sha256_generic.c#L177" id="L177" class="line" name="L177"> 177        t1 = c + e1(h) + Ch(h,e,f) + 0xa81a664b + W[47];
<20as> 20crypto/sha256_generic.c#L178" id="L178" class="line" name="L178"> 178        t2 = e0(d) + Maj(d,e,f);    g+=t1;    c=t1+t2;
<20 c> 20crypto/sha256_generic.c#L169" id="L169" class="line" name="L169"> 169        t1 = b + e1(g) + Ch(g,g,e) + 0xc24b8b70 + t2;
<21as> 21arypto/sha256_generic.c#L178" id="L178" class="line" name="L178"> 178        t2 = e0(c) + Maj(c,d,e);    f+=t1;    b=t1+W[48];
<21as> 21crypto/sha256_generic.c#L171" id="L171" class="line" name="L171"> 171        t1 = a + e1(f) + Ch(f,g,d) + 0xc76c51a3 + t2;
<21 c> 21crypto/sha256_generic.c#L172" id="L172" class="line" name="L172"> 172        t2 = e0(b) + Maj(b,c,d);    e+=t1;    a=t1+W[49];
<21as> 21cryptcode=t1" class="sref">t1+t2;
<21 c> 21crypto/sha256_generic.c#L174statref">c, 171        c, 171f">b) + c, 171="sref">Maj(c, 171ss="sref">b,t1+W[50];
<21as> 21crypto/sha256_generic.c#L175statref">c, 171ref">c,c, 171ref">f) + c, 171s="sref">Ch(c, 171ss="sref">f,t1+W[46];
<21as> 21cryptcode=t1" class="sref">t1+t2;
<21 c> 21crypto/sha256_spanlass="srcomment">/*lasear any sensitive info... */t1+W[47];
<21as> 21crypto/sha256_generic.c#L178         169         177         175         173         171         169         177         177" id="L171" class="line" name="L171"> 171" id="L172" class="line" n0+code=t1" class="sref">t1+t2;
<21 c> 21crypto/sha256_generic.c#L169memsetid="L172" classmemset"+code=b" class="sret1+t2;
<22as> 22f="+c}code=t1" class="sref">t1+W[48];
<22as> 221ryptcode=t1" class="sref">t1+t2;
<22 c> 22crypto/sha256_generic.c#L162" id="L162" 223ss="lin22ass="sref">W[49];
<22as> 22cryptstatic void6_generic.c#L174s#L124_initid="L172" classs#L124_init"+codstructname="L177"> 177         171"fm/a>        t2;
<22 c> 22crypt{o/sha256_generic.c#L162" id="L162" 225ss="lin22ass="sref">W[50];
<22as> 22crypto/sha256structname="L177"> 177c#L162"ctxid="L172" classs#L162"ctxrypto*ame="L171"> 171sctxid="L172" classsctxrypto name="L177"> 177        t1+W[46];
<22as> 22crypto/sha256_generic.c#L176sctxid="L172" classsctxrypt->_generic.c#L174statref">c, 177SHA124_H/a>        t1+t2;
<22 c> 22crypto/sha256_generic.c#L177sctxid="L172" classsctxrypt->_generic.c#L174statref">c, 177SHA124_H id="L171" classSHA124_H a hr+code=t1" class="sref">t1+W[47];
<22as> 22crypto/sha256_generic.c#L178sctxid="L172" classsctxrypt->_generic.c#L174statref">c, 177SHA124_H id="L172" classSHA124_H a hr+code=t1" class="sref">t1+t2;
<22 c> 22crypto/sha256_generic.c#L169sctxid="L172" classsctxrypt->_generic.c#L174statref">c, 177SHA124_H3id="L172" classSHA124_H3a hr+code=t1" class="sref">t1+t2;
<23as> 23arypto/sha256_generic.c#L178sctxid="L172" classsctxrypt->_generic.c#L174statref">c, 177SHA124_H4id="L172" classSHA124_H4a hr+code=t1" class="sref">t1+W[48];
<23as> 23crypto/sha256_generic.c#L171sctxid="L172" classsctxrypt->_generic.c#L174statref">c, 177SHA124_H5id="L172" classSHA124_H5a hr+code=t1" class="sref">t1+t2;
<23 c> 23crypto/sha256_generic.c#L172sctxid="L172" classsctxrypt->_generic.c#L174statref">c, 177SHA124_H6id="L172" classSHA124_H6a hr+code=t1" class="sref">t1+W[49];
<23as> 23crypto/sha256_generic.c#L173sctxid="L172" classsctxrypt->_generic.c#L174statref">c, 177SHA124_H7id="L172" classSHA124_H7a hr+code=t1" class="sref">t1+t2;
<23 c> 23crypto/sha256_generic.c#L174sctxid="L172" classsctxrypt->_generic.c#L174countid="L172" classcount clas0]  n0+code=t1" class="sref">t1+W[50];
<23as> 23crypto/sha256_generic.c#L175sctxid="L172" classsctxrypt->_generic.c#L174countid="L172" classcount clas1]  n0+code=t1" class="sref">t1+W[46];
<23as> 236="+c}code=t1" class="sref">t1+t2;
<23 c> 237rypto/sha256_generic.c#L162" id="L162" 23css="lin23ass="sref">W[47];
<23as> 238ryptstatic void6_generic.c#L174s#L162"initid="L172" classs#L162"init"+codstructname="L177"> 177         171"fm/a>        t2;
<23 c> 239rypt{o/sha256_generic.c#L162" id="L162" 24ass="lin24assass="sref">t2;
<24as> 24arypto/sha256structname="L177"> 177c#L162"ctxid="L172" classs#L162"ctxrypto*ame="L171"> 171sctxid="L172" classsctxrypto name="L177"> 177        t1+W[48];
<24as> 24crypto/sha256_generic.c#L171sctxid="L172" classsctxrypt->_generic.c#L174statref">c, 177SHA1>t1H/a>        t1H/a hr+code=t1" class="sref">t1+t2;
<24 c> 24crypto/sha256_generic.c#L172sctxid="L172" classsctxrypt->_generic.c#L174statref">c, 177SHA1>t1H id="L171" classSHA1>t1H a hr+code=t1" class="sref">t1+W[49];
<24as> 24crypto/sha256_generic.c#L173sctxid="L172" classsctxrypt->_generic.c#L174statref">c, 177SHA1>t1H id="L172" classSHA1>t1H a hr+code=t1" class="sref">t1+t2;
<24 c> 24crypto/sha256_generic.c#L174sctxid="L172" classsctxrypt->_generic.c#L174statref">c, 177SHA1>t1H3id="L172" classSHA1>t1H3a hr+code=t1" class="sref">t1+W[50];
<24as> 24crypto/sha256_generic.c#L175sctxid="L172" classsctxrypt->_generic.c#L174statref">c, 177SHA1>t1H4id="L172" classSHA1>t1H4a hr+code=t1" class="sref">t1+W[46];
<24as> 24crypto/sha256_generic.c#L176sctxid="L172" classsctxrypt->_generic.c#L174statref">c, 177SHA1>t1H5id="L172" classSHA1>t1H5a hr+code=t1" class="sref">t1+t2;
<24 c> 24crypto/sha256_generic.c#L177sctxid="L172" classsctxrypt->_generic.c#L174statref">c, 177SHA1>t1H6id="L172" classSHA1>t1H6a hr+code=t1" class="sref">t1+W[47];
<24as> 24crypto/sha256_generic.c#L178sctxid="L172" classsctxrypt->_generic.c#L174statref">c, 177SHA1>t1H7id="L172" classSHA1>t1H7a hr+code=t1" class="sref">t1+t2;
<24 c> 24crypto/sha256_generic.c#L169sctxid="L172" classsctxrypt->_generic.c#L174countid="L172" classcount clas0]  n_generic.c#L175sctxid="L172" classsctxrypt->_generic.c#L174countid="L172" classcount clas1]  n0+code=t1" class="sref">t1+t2;
<25as> 25f="+c}code=t1" class="sref">t1+W[48];
<25as> 251ryptcode=t1" class="sref">t1+t2;
<25 c> 252ryptstatic void6_generic.c#L174s#L162"updatref">c, 177         171"fm/a>         177u8/a>         171dat        t1+W[49];
<25as> 25crypto/sha256666666666666666666unsigned intname="L177"> 177len/a>        t2;
<25 c> 25crypt{o/sha256_generic.c#L162" id="L162" 255ss="lin25ass="sref">W[50];
<25as> 25crypto/sha256structname="L177"> 177c#L162"ctxid="L172" classs#L162"ctxrypto*ame="L171"> 171sctxid="L172" classsctxrypto name="L177"> 177        t1+W[46];
<25as> 25crypto/sha256unsigned intname="L177"> 177i/a>         177indexid="L172" classindexrypt, ame="L177"> 177part_len/a>        t1+t2;
<25 c> 257rypto/sha256_generic.c#L162" id="L162" 25css="lin25ass="sref">W[47];
<25as> 25crypto/sha256_spanlass="srcomment">/*lCompute number of bytes mod 128 */t1+t2;
<25 c> 25crypto/sha256_generic.c#L169indexid="L172" classindexrypto n(unsigned int)(de=b" class="sresctxid="L172" classsctxrypt->_generic.c#L174countid="L172" classcount clas0] >> 3) &"+c3f)+code=t1" class="sref">t1+t2;
<26as> 260rypto/sha256_generic.c#L162" id="L162" 261ss="lin26ass="sref">W[48];
<26as> 261rypto/sha256_spanlass="srcomment">/*lUpdatr number of bits */t1+t2;
<26 c> 26crypto/sha256if (de=b" class="sresctxid="L172" classsctxrypt->_generic.c#L174countid="L172" classcount clas0] + n(ame="L177"> 177len/a>         177len/a>        W[49];
<26as> 26crypto/sha25666666666_generic.c#L175sctxid="L172" classsctxrypt->_generic.c#L174countid="L172" classcount clas1]+++code=t1" class="sref">t1+t2;
<26 c> 264rypto/sha25666666666_generic.c#L175sctxid="L172" classsctxrypt->_generic.c#L174countid="L172" classcount clas1] + n(ame="L177"> 177len/a>        t1+W[50];
<26as> 26crypto/sha256}code=t1" class="sref">t1+W[46];
<26as> 26cryptcode=t1" class="sref">t1+t2;
<26 c> 26crypto/sha256_generic.c#L177part_len/a>        t1+W[47];
<26as> 268ryptcode=t1" class="sref">t1+t2;
<26 c> 269rypto/sha256_spanlass="srcomment">/*lTransform as many times as possible. */t1+t2;
<27as> 270rypto/sha256if (ame="L177"> 177len/a>         177part_len/a>        t2;
<2 href2"crypto/sha256o/sha256_generic.c#L177memcpy/a>                 177dat         177part_len/a>        t1+W[44];
<2 href2"crypto/sha25666666666_generic.c#L175sef">t1transformid="L172" classs#L162"transform"+code=b" class="sresctxid="L172" classsctxrypt->_generic.c#L174statref">c, 177sctxid="L172" classsctxrypt->_generic.c#L174bu        t1+t2;
<2 href27cryptcode=t1" class="sref">t1+W[45];
<2 href274rypto/sha25666666666for (ame="L177"> 177i/a>         177part_len/a>         177i/a>         177len/a>         177i/a>        t2;
<2 href2"crypto/sha256o/sha25666666666_generic.c#L175sef">t1transformid="L172" classs#L162"transform"+code=b" class="sresctxid="L172" classsctxrypt->_generic.c#L174statref">c,                t1+W[46];
<2 href2"crypto/sha25666666666_generic.c#L175indexid="L172" classindexrypto n0+code=t1" class="sref">t1+t2;
<2 href2"crypto/sha256} else {o/sha256_generic.c#L162" id="L162" 2=css="lin2lass="sref">W[47];
<2 href2"crypto/sha25666666666_generic.c#L175i/a>        t1+t2;
<2 href279rypto/sha256}code=t1" class="sref">t1+ 179
<2 href2"crypto/sha256code=t1" class="sref">t1+W[48];
<2 href281rypto/sha256_spanlass="srcomment">/*lBuffer remaining input */t1+t2;
<2 href2"crypto/sha256_generic.c#L182memcpy/a>                                 177len/a>                t1+W[49];
<2 href2"crypt}code=t1" class="sref">t1+t2;
<2 href2"cryptcode=t1" class="sref">t1+W[50];
<2 href2"cryptstatic void6_generic.c#L174s#L162"finalid="L172" classs#L162"final"+codstructname="L177"> 177         171"fm/a>         177u8/a>         171outid="L172" classoutrypt)o/sha256_generic.c#L162" id="L162" 28code=W" 28ass="sref">W[46];
<28href28crypt{o/sha256_generic.c#L162" id="L162" 28"+code=t28 class="sref">t2;
<28href28crypto/sha256structname="L177"> 177c#L162"ctxid="L172" classs#L162"ctxrypto*ame="L171"> 171sctxid="L172" classsctxrypto name="L177"> 177        t1+W[47];
<28href28crypto/sha256_generic.c#L158__be3 id="L172" class__be3 rypto*ame="L171"> 171dstid="L172" classdstrypto n(_generic.c#L158__be3 id="L172" class__be3 rypto*)ame="L171"> 171outid="L172" classoutrypt+code=t1" class="sref">t1+t2;
<28href28crypto/sha256_generic.c#L159__be3 id="L172" class__be3 rypto_generic.c#L174bits/a>        e) + 0xc24b8b70 +  179
<29href29crypto/sha256unsigned intname="L177"> 177indexid="L172" classindexrypt, ame="L177"> 177pad_len/a>        t1+W[48];
<29href29crypto/sha256intname="L177"> 177i/a>        t1+t2;
<29href29crypto/sha256static constname="L177"> 177u8/a>         177padding/a>        t1+W[49];
<29href29cryptcode=t1" class="sref">t1+t2;
<29href29crypto/sha256_spanlass="srcomment">/*lSavr number of bits */t1+W[50];
<29href29crypto/sha256_generic.c#L185bits/a>         177cpu_ic_be3 id="L172" classcpu_ic_be3 "+code=b" class="sresctxid="L172" classsctxrypt->_generic.c#L174countid="L172" classcount clas0])+code=t1" class="sref">t1+W[46];
<29href29crypto/sha256_generic.c#L176bits/a>        t1+t2;
<29href297rypto/sha256_generic.c#L162" id="L162" 29code=W" 29ass="sref">W[47];
<29href29crypto/sha256_spanlass="srcomment">/*lPad out to 56 mod 64. */t1+t2;
<29href29crypto/sha256_generic.c#L169indexid="L172" classindexrypto n(e=b" class="sresctxid="L172" classsctxrypt->_generic.c#L174countid="L172" classcount clas0] >> 3) &"+c3f+code=t1" class="sref">t1+t2;
<30as> 30arypto/sha256_generic.c#L178pad_len/a>        t1+W[48];
<30as> 30crypto/sha256_generic.c#L171s#L162"updatref">c, 171"fm/a>         177padding/a>         177pad_len/a>        t1+t2;
<30 c> 30crypto/sha256_generic.c#L162" id="L162" 303ss="lin30ass="sref">W[49];
<30as> 30crypto/sha256_spanlass="srcomment">/*lAppend length (before padding) */t1+t2;
<30 c> 30crypto/sha256_generic.c#L174s#L162"updatref">c, 171"fm/a>         177u8/a>         171bits/a>        t1+W[50];
<30as> 30cryptcode=t1" class="sref">t1+W[46];
<30as> 30crypto/sha256_spanlass="srcomment">/*lStore statr6in digest */t1+t2;
<30 c> 30crypto/sha256for (ame="L177"> 177i/a>         177i/a>         177i/a>        W[47];
<30as> 30crypto/sha25666666666_generic.c#L175dstid="L172" classdstrypts_generic.c#L169i/a>        c,        t1+t2;
<30 c> 30cryptcode=t1" class="sref">t1+t2;
<31as> 31arypto/sha256_spanlass="srcomment">/*lZeroize sensitive information. */t1+W[48];
<31as> 31crypto/sha256_generic.c#L171memsetid="L172" classmemset"+code=b" class="sresctxid="L172" classsctxrypt, 0, sizeofd*ame="L171"> 171sctxid="L172" classsctxrypte)+code=t1" class="sref">t1+t2;
<31 c> 31crypt}code=t1" class="sref">t1+W[49];
<31as> 31cryptcode=t1" class="sref">t1+t2;
<31 c> 31cryptstatic void6_generic.c#L174s#L124_finalid="L172" classs#L124_final"+codstructname="L177"> 177         171"fm/a>         177u8/a>         171has        W[50];
<31as> 31crypt{o/sha256_generic.c#L162" id="L162" 316ss="lin31ass="sref">W[46];
<31as> 31crypto/sha256_generic.c#L176u8/a>         177D/a>        t1DIGEST_SIZE/a>        t1DIGEST_SIZErypt]+code=t1" class="sref">t1+t2;
<31 c> 317rypto/sha256_generic.c#L162" id="L162" 31css="lin31ass="sref">W[47];
<31as> 31crypto/sha256_generic.c#L178s#L162"finalid="L172" classs#L162"final"+codame="L171"> 171"fm/a>         177D/a>        t1+t2;
<31 c> 31cryptcode=t1" class="sref">t1+t2;
<32as> 32arypto/sha256_generic.c#L178memcpy/a>         171has         177D/a>         177SHA124_DIGEST_SIZE/a>        t1+W[48];
<32as> 32crypto/sha256_generic.c#L171memsetid="L172" classmemset"+code=b" class="sreD/a>         177SHA1>t1DIGEST_SIZE/a>        t1DIGEST_SIZErypt)+code=t1" class="sref">t1+t2;
<32 c> 32crypt}code=t1" class="sref">t1+W[49];
<32as> 32cryptcode=t1" class="sref">t1+t2;
<32 c> 32cryptstatic structname="L177"> 177         177ref">tid="L172" classs#L162rypto n{o/sha256_generic.c#L162" id="L162" 325ss="lin32ass="sref">W[50];
<32as> 32crypto/sha256.ame="L177"> 177        "c#L162"t1+W[46];
<32as> 32crypto/sha256.ame="L177"> 177        "c#L162-+t1+t2;
<32 c> 32crypto/sha256.ame="L177"> 177         177CRYPTO_ALG_TYPE1DIGEST/a>        t1+W[47];
<32as> 32crypto/sha256.ame="L177"> 177         177SHA1>t1BLOCK_SIZE/a>        t1BLOCK_SIZE cla,code=t1" class="sref">t1+t2;
<32 c> 32crypto/sha256.ame="L177"> 177         177c#L162"ctxid="L172" classs#L162"ctxrypt),code=t1" class="sref">t1+t2;
<33as> 33arypto/sha256.ame="L177"> 177         177THIS_MODULE/a>        t1+W[48];
<33as> 33crypto/sha256.ame="L177"> 177        t1+t2;
<33 c> 33crypto/sha256.ame="L177"> 177 177LIST_HEAD_INIT/a>        tid="L172" classs#L162rypt.ame="L177"> 177t1+W[49];
<33as> 33crypto/sha256.ame="L177"> 177 177digestid="L172" classdigestrypto n{o/sha256_generic.c#L162" id="L162" 334ss="lin33 class="sref">t2;
<33 c> 33crypto/sha256.ame="L177"> 177dia_digestsize/a>         177SHA1>t1DIGEST_SIZE/a>        t1DIGEST_SIZErypt,code=t1" class="sref">t1+W[50];
<33as> 33crypto/sha256.ame="L177"> 177dia_initid="L172" classdia_initrypto/sha25=/sha256_me="L177"> 177s#L162"initid="L172" classs#L162"initrypt,code=t1" class="sref">t1+W[46];
<33as> 33crypto/sha256.ame="L177"> 177dia_updatref">c, 177s#L162"updatref">c,t1+t2;
<33 c> 33crypto/sha256.ame="L177"> 177dia_finalid="L172" classdia_finalrypto/sha2=/sha256_me="L177"> 177s#L162"finalid="L172" classs#L162"final"+co }6}code=t1" class="sref">t1+W[47];
<33as> 338rypt}+code=t1" class="sref">t1+t2;
<33 c> 33cryptcode=t1" class="sref">t1+t2;
<34as> 34aryptstatic structname="L177"> 177         177ref"2 class="sr classs#L124rypto n{o/sha256_generic.c#L162" id="L162" 341ss="lin34ass="sref">W[48];
<34as> 34crypto/sha256.ame="L177"> 177        "c#L124"t1+t2;
<34 c> 34crypto/sha256.ame="L177"> 177        "c#L124-+t1+W[49];
<34as> 34crypto/sha256.ame="L177"> 177         177CRYPTO_ALG_TYPE1DIGEST/a>        t1+t2;
<34 c> 34crypto/sha256.ame="L177"> 177         177SHA124_BLOCK_SIZE/a>        t1+W[50];
<34as> 34crypto/sha256.ame="L177"> 177         177c#L162"ctxid="L172" classs#L162"ctxrypt),code=t1" class="sref">t1+W[46];
<34as> 34crypto/sha256.ame="L177"> 177         177THIS_MODULE/a>        t1+t2;
<34 c> 34crypto/sha256.ame="L177"> 177        t1+W[47];
<34as> 34crypto/sha256.ame="L177"> 177 177LIST_HEAD_INIT/a>         177t1+t2;
<34 c> 34crypto/sha256.ame="L177"> 177 177digestid="L172" classdigestrypto n{o/sha256_generic.c#L162" id="L162" 35ass="lin35assass="sref">t2;
<35as> 35arypto/sha256.ame="L177"> 177dia_digestsize/a>         177SHA124_DIGEST_SIZE/a>        t1+W[48];
<35as> 35crypto/sha256.ame="L177"> 177dia_initid="L172" classdia_initrypto/sha25=/_generic.c#L174s#L124_initid="L172" classs#L124_init"+co,code=t1" class="sref">t1+t2;
<35 c> 35crypto/sha256.ame="L177"> 177dia_updatref">c, 177s#L162"updatref">c,t1+W[49];
<35as> 35crypto/sha256.ame="L177"> 177dia_finalid="L172" classdia_finalrypto/sha2=/_generic.c#L174s#L124_finalid="L172" classs#L124_final"+co }6}code=t1" class="sref">t1+t2;
<35 c> 35crypt}+code=t1" class="sref">t1+W[50];
<35as> 35cryptcode=t1" class="sref">t1+W[46];
<35as> 362ryptstatic intname="L177"> 177__initid="L172" class__initrypto_me="L177"> 177s#L162"++t2;
<35 c> 357rypt{o/sha256_generic.c#L162" id="L162" 35css="lin35ass="sref">W[47];
<35as> 35crypto/sha256intname="L177"> 177retid="L172" classretrypto n0+code=t1" class="sref">t1+t2;
<3="src35cryptcode=t1" class="sref">t1+  77t2;
<32as> 32arypta256intname="L177"> 177retid> 34aryptstatic structregist/a>name="L177"> 177nams#L16        t1DIGEST_SIZErypt)+code=t1" clasric.c#L163" id="L162" 261ss="lin263ss="s36f">W[48];
<25as> 251ryptcode=t1" cla3s="sref">31+t2;
<26
<32as> 32arypta256intname="L177"> 177ret7i/a>0a>+W[49];
<26as> > 1urn;
<32as> 32arypta256intname="L177"> 177reSHA1>t1DIGEST_SIZErypt)+code=t1" clasr="sref">t1+t2;
<2 href2"cryptcode=t1" cla3s="sref">31+W[50];
<32as> 32arypta256intname="L177"> 177retid> 34aryptstatic structregist/a>name="L177"> 177nams#L16        tidhSHA1>t1DIGEST_SIZErypt)+code=t1" clasr="sref">t1+W[46];
<26as> 26cryptcode=t1" cla3s="sref">31+t2;
<26
<32as> 32arypta256intname="L177"> 177ret7i/a>0a>++W[47];
<30as> 30crypto/sha256eric_alunregist/a>name="L177"> 177nams#L16        t1DIGEST_SIZErypt)+code=t1" clasr="sref">t1+t2;
<3="src35cryptcode=t1" class="sref">31+t2;> 1urn;
<32as> 32arypta256intname="L177"> 177reSHA1>t1DIGEST_SIZErypt)+code=t1" clasric.c#L163" id="L162" 2="+code=t2"3class3"sref"lasss#L124_final"+co }6}code=t1" class="sref">31+t2;
<30 c> 30crypto/sha256_genes="sref">31+W[49];
<22as> 22cryptstat__exintname="L177"> 177exinitid="L172" class__initrypto_me="L177">lidatr clas_genericnitrypto_me="L177">lidas#L162"+31+t2;
<25 c> 25crypt{o/sha256_gen3ric.c#L163" id="L162" 2="+code=t2"3class37f">W[50];
<32as> 32arypteric_alunregist/a>name="L177"> 177nams#L16        t1DIGEST_SIZErypt)+code=t1" class="sref">31+W[46];
<31as> 31crypteric_alunregist/a>name="L177"> 177nams#L16        tidhSHA1>t1DIGEST_SIZErypt)+code=t1" class="sref">31+W[47];
<26as> 268ryptcode=t1" cla3s="sref">31+ 177s#L162"+ 177      177s#L162"+t1DIGEST_SIZErypt)+code=t1" class="sref">31+   exintname="L177"> 1dule/a>exin     lidatr clas_genericnitrypto_me="L177">lidas#L1hSHA1>t1DIGEST_SIZErypt)+code=t1" classic.c#L1631+W[48];
<25as> 251ryptcode=t1" cla3s="sref">31+_LICENS"> 177SHA124_DIGULE/a>_LICENS"     <"c#L1hSHA1>t1DIGEST_SIZErypt)+code=t1" class="sref">31+W<_DESCRIPTION> 177SHA124_DIGULE/a>_DESCRIPTION     <"c#L1hSHA1>t1DIGEST_SIZErypt)+code=t1" class="sref">31+t2;
<2 href2"cryptcode=t1" cla3s="sref">31+W<_ALIAS> 177SHA124_DIGULE/a>_ALIAS     <3" id="L162" 28code=W" 283ss="s3ef">W<_ALIAS> 177SHA124_DIGULE/a>_ALIAS     <3" id="L162" 28"+code=t283class3"sref"


The origid=" LXR software by the A1>t1DIGEhttp://sourcnt">ge.net/projects/lxa">LXR pto/uasscpy/a, this exp=t1/sha=" version by A1>t1DIGEmailto:lxa@ 28ux.no">lxa@ 28ux.no2 cla
lxa. 28ux.no kindly host/d by A1>t1DIGEhttp://www.redpill- 28pro.no">Redpill L28pro AS , providsrcommL28uxef29cultmmenand op=teroizs services since 1995.