linux/crypto/shash.c
<<
>>
Prefs
   1/*
   2 * Synchronous Cryptographic Hash operations.
   3 *
   4 * Copyright (c) 2008 Herbert Xu <herbert@gondor.apana.org.au>
   5 *
   6 * This program is free software; you can redistribute it and/or modify it
   7 * under the terms of the GNU General Public License as published by the Free
   8 * Software Foundation; either version 2 of the License, or (at your option)
   9 * any later version.
  10 *
  11 */
  12
  13#include <crypto/scatterwalk.h>
  14#include <crypto/internal/hash.h>
  15#include <linux/err.h>
  16#include <linux/kernel.h>
  17#include <linux/module.h>
  18#include <linux/slab.h>
  19#include <linux/seq_file.h>
  20#include <linux/cryptouser.h>
  21#include <net/netlink.h>
  22
  23#include "internal.h"
  24
  25static const struct crypto_type crypto_shash_type;
  26
  27static int shash_no_setkey(struct crypto_shash *tfm, const u8 *key,
  28                           unsigned int keylen)
  29{
  30        return -ENOSYS;
  31}
  32
  33static int shash_setkey_unaligned(struct crypto_shash *tfm, const u8 *key,
  34                                  unsigned int keylen)
  35{
  36        struct shash_alg *shash = crypto_shash_alg(tfm);
  37        unsigned long alignmask = crypto_shash_alignmask(tfm);
  38        unsigned long absize;
  39        u8 *buffer, *alignbuffer;
  40        int err;
  41
  42        absize = keylen + (alignmask & ~(crypto_tfm_ctx_alignment() - 1));
  43        buffer = kmalloc(absize, GFP_KERNEL);
  44        if (!buffer)
  45                return -ENOMEM;
  46
  47        alignbuffer = (u8 *)ALIGN((unsigned long)buffer, alignmask + 1);
  48        memcpy(alignbuffer, key, keylen);
  49        err = shash->setkey(tfm, alignbuffer, keylen);
  50        kzfree(buffer);
  51        return err;
  52}
  53
  54int crypto_shash_setkey(struct crypto_shash *tfm, const u8 *key,
  55                        unsigned int keylen)
  56{
  57        struct shash_alg *shash = crypto_shash_alg(tfm);
  58        unsigned long alignmask = crypto_shash_alignmask(tfm);
  59
  60        if ((unsigned long)key & alignmask)
  61                return shash_setkey_unaligned(tfm, key, keylen);
  62
  63        return shash->setkey(tfm, key, keylen);
  64}
  65EXPORT_SYMBOL_GPL(crypto_shash_setkey);
  66
  67static inline unsigned int shash_align_buffer_size(unsigned len,
  68                                                   unsigned long mask)
  69{
  70        return len + (mask & ~(__alignof__(u8 __attribute__ ((aligned))) - 1));
  71}
  72
  73static int shash_update_unaligned(struct shash_desc *desc, const u8 *data,
  74                                  unsigned int len)
  75{
  76        struct crypto_shash *tfm = desc->tfm;
  77        struct shash_alg *shash = crypto_shash_alg(tfm);
  78        unsigned long alignmask = crypto_shash_alignmask(tfm);
  79        unsigned int unaligned_len = alignmask + 1 -
  80                                     ((unsigned long)data & alignmask);
  81        u8 ubuf[shash_align_buffer_size(unaligned_len, alignmask)]
  82                __attribute__ ((aligned));
  83        u8 *buf = PTR_ALIGN(&ubuf[0], alignmask + 1);
  84        int err;
  85
  86        if (unaligned_len > len)
  87                unaligned_len = len;
  88
  89        memcpy(buf, data, unaligned_len);
  90        err = shash->update(desc, buf, unaligned_len);
  91        memset(buf, 0, unaligned_len);
  92
  93        return err ?:
  94               shash->update(desc, data + unaligned_len, len - unaligned_len);
  95}
  96
  97int crypto_shash_update(struct shash_desc *desc, const u8 *data,
  98                        unsigned int len)
  99{
 100        struct crypto_shash *tfm = desc->tfm;
 101        struct shash_alg *shash = crypto_shash_alg(tfm);
 102        unsigned long alignmask = crypto_shash_alignmask(tfm);
 103
 104        if ((unsigned long)data & alignmask)
 105                return shash_update_unaligned(desc, data, len);
 106
 107        return shash->update(desc, data, len);
 108}
 109EXPORT_SYMBOL_GPL(crypto_shash_update);
 110
 111static int shash_final_unaligned(struct shash_desc *desc, u8 *out)
 112{
 113        struct crypto_shash *tfm = desc->tfm;
 114        unsigned long alignmask = crypto_shash_alignmask(tfm);
 115        struct shash_alg *shash = crypto_shash_alg(tfm);
 116        unsigned int ds = crypto_shash_digestsize(tfm);
 117        u8 ubuf[shash_align_buffer_size(ds, alignmask)]
 118                __attribute__ ((aligned));
 119        u8 *buf = PTR_ALIGN(&ubuf[0], alignmask + 1);
 120        int err;
 121
 122        err = shash->final(desc, buf);
 123        if (err)
 124                goto out;
 125
 126        memcpy(out, buf, ds);
 127
 128out:
 129        memset(buf, 0, ds);
 130        return err;
 131}
 132
 133int crypto_shash_final(struct shash_desc *desc, u8 *out)
 134{
 135        struct crypto_shash *tfm = desc->tfm;
 136        struct shash_alg *shash = crypto_shash_alg(tfm);
 137        unsigned long alignmask = crypto_shash_alignmask(tfm);
 138
 139        if ((unsigned long)out & alignmask)
 140                return shash_final_unaligned(desc, out);
 141
 142        return shash->final(desc, out);
 143}
 144EXPORT_SYMBOL_GPL(crypto_shash_final);
 145
 146static int shash_finup_unaligned(struct shash_desc *desc, const u8 *data,
 147                                 unsigned int len, u8 *out)
 148{
 149        return crypto_shash_update(desc, data, len) ?:
 150               crypto_shash_final(desc, out);
 151}
 15}
 139        if ((unsigned long)out & alignmask)
crypto_shash_setkey(st15=desc" class="sref">desc, data,
 147                                 unsigned int len, crypto_shash *<1a hre15 75{
 148{
 149        return   515ef="+code=tfm" class="sref">tfm<1 class="s1ref">shash_alg *tfm;
  77        struct shash_alg *shash = crypto_shash_alg(tfm);
  58        unsigned long alignmask = crypto_shash_ali1gnmas1(tfm);
  59
  60        if ((unsigned long)key & 1alignmas1k)
 105                return <| lass="line" name="L140"> 140                return )shash_final_unaligned(tfm, <1a hre1="+code=key" class="sref">key, u8 * 150               crypto_shash_fin2" class="line" name="L152"> 15}
 1391shash->setkey(<1a href="+1code=tfm" class="sref">t1fmkey, keyle="+iv iL151" class="151up* 150               crypto_shash_fin2" class="line" name="L152"> 15}
 139(cry1pto_shash_setkey);
<1a hre1="crypto/shash.c#L66" id="L66" class="line" name="L66">  66
 139  1ef="1e=shash_align_buffer_size" class1="sref">s1hash_align_buffer_size(un16+code=tfm" class="sref">tfm, cons class const data,
 147                                 unsigned int len,   69{
 148{
 149        return l1en + (mask & ~((buffer =ame="Linia* al(  73st1atic 17"+code=key" class="sass="sref">desc,  150               crypto_shash_fin2" class="line" name="L152"> 15}
 139shash_updat1e_una17ef="+code=crypto_shash_setkey" c1shash_des1c" class="sref">shash_de1sctfm, con class iL151" class="line" name="L class*data,
 147                                 unsigned int len, crypto_shash1 *{
 148{
 149        return shash = crypto_shash_alg(tfm;
  77        struct shash_alg *shashcrypto_shash_ali1gnmas1(tfm);
  58        unsigned long alignmask = alignmask + 1 -
tfm);
  59
  60        if ((unsigned long)alig1nmask18igned(struct sh1ash_a1ign_buffer_siz clas class="line" name="L105"> 105                return <| lass="line" name="L140"> 140                return )shash_final_unaligned(align1ed));
key,  150               crypto_shash_fin2" class="line" name="L152"> 15}
 139PTR_ALIGN(&1amp;<18 href="+code=alignmask" class="s85">  85<1/a>
key, keyle class iL151" class=" class* 150               crypto_shash_fin2" class="line" name="L152"> 15}
 139unaligned_len &1gt; <18ef="+code=crypto_shash_update" c1en)
<1a href="crypto/shash.c#L187" i1="L87"to/shash.c#L66" id="L66" class="line" name="L66">  66
 139 12f">memcpy1(tfm, cons efault_expors iL151" class=", cons efault_expors*data,
 1void" class="line" name="L149"> 149        return data, mask & ~(update( 127
,
 a>
  class="sref">shash_alg *un1align1d_len);
 = align1r ?:
1  94               <1a hre19 href="+code=alignmask" class="sa href="+1code=desc" class="sref">1desc<1a>, tfm, cons efault_impors iL151" class=", cons efault_impors*data,
 147void" class="line" nai"sref">crypto_shi   struct   97in1t tfm<1lass="sre1f">crypto_shash_update(st19e=ds" class="sref">ds);
,
 a>
crypto_shi   st>
  class="sref">shash_alg *shash_desc * = memcpy1s="line" name="L99">  991{19"+code=crypto_shash_update" classshash" cl1ass="sref">crypto_shash<1/a> *19="+code=alignmask" class="sref"2m = <2 href="+code=desc" class2"sref2>desc<=tfm" class="sref">tfm, consasyncclass="line" name="L67, consasyncclass="*tfm;
  7/a>                        unsigned int keylen)
  57        struct crypto_shash_al2gnmas20 href="+code=tfm" class="sref">t2+code=dat2" class="sref">data 2amp; 20desc->tfm;
,
  60        if ((unsigned long)alig2mask)
alig2m" name="L97">  97in2 u8 *,
}
  65shash-> 12lass="sre2">EXPORT_SYMBOL_GPL(2a hre20"sref=tfm" class="sref">tfm, consasyncciniass="sref">buffe, consasynccinia*crypto_shash<2a hre20class="sref">mask & ~(shash_fi2al_un21desc->tfm;
,
  60       name="a/sha req60"class="line" name="Lreq iL151" class="reqtructde=EXPORT_SYMBOL_GPL" class=2shash_des2" class="sref">shash_des2 21ss="sref">crypto_shash_alg(data,
            ((unsig/sha requass hreta,
crypto_shash2/a> *21tkey" class="sref">setkey(<2m = <2 href="+code=desc" class2"sref2>desc->L150" id="L150" class="line" name="L150">  class="sref">shash_alg *,
alig2s="sref">crypto_shash_al2gnmas2(  class="sref">shash_flag href="crypto/shflag 47">            ((unsireq iL151" class="reqtruc class="sref">shash_bas/a>        shash_flag href="crypto/shflag 47">e=EXPORT_SYMBOL_GPL" class=2s5f">alig2ref="+code=crypto_shash_2lg" c21igned(struct cryp2o_shash_digestsize(<2 href2"+code=tfm" cl>(buffer =ame="Linia* ae=EXPORT_SYMBOL_GPL" class=2ss2ash_a2ign_bue=crypto_shash_update" clas2sref">ali2ned));
PTR_ALIGN(2amp;<2 href=lass="sref">tfm, consa conss="sref">len) ?:
, consa conss="sre*data,
t 2121
mask & ~(err<2a> = crypto_shash_alg( ="crypwalfinal2tfmnbyte href="crypto/shnbyte s="se=EXPORT_SYMBOL_GPL" class=2c = <2124                g2to  125
outnbyte href="crypto/shnbyte s="s"L59" class="line" name=""crypwal<_firss iL151" class="line" n"crypwal<_firssclass="line" name="Lreq iL151" class="reqtruc, "line" name="L120"> wal = m2mcpy({
outnbyte href="crypto/shnbyte s="s"L59" class="line" name=""crypwal<_don/a>         walcryp2ss="sref">buf, outnbyte href="crypto/shnbyte s="s"L59" class="line" name="s conss="sref">len) ?:
 name="s conss="sre* 150          walshash_      =  129    2   (ds);
 131}
  66
len) ?:
, consa conss="sre* =  132i23=final" class="sref">final(2l" class=2sref">crypto_shash_final2/a>(s2ruct <=tfm" class="sref">tfm, consasynccs="sref">len) ?:
, consasynccs="sre*shash_desc *mask & ~(crypto_shash2/a> *23" id="L86" clde=key" class="sref">keylen) ?:
, consa conss="sre*m2 href="+code=desc" class2"sref23ef="+code=crypto_shash_update" c2/a> = crypto_shash_al2gnmas23+code=tfm" class="sref">tfm, consasyncc1" id="L151" class=", consasyncc1" id*    2 class="sref">out &a2p; (alignm2sk)
data,  151}
shash_resuls iL151" class="resuls* = desc, 2a hre2="+codcode=crypto_shash_update" c2 class="s2ef">shash->final(2a href="+2ode=desc" class="sref">d2sctfm, consa cons="+iv iL151" class=", consa cons="+iv*data,
t EXPORT_SYMBOL_GPL(2a hre24=desc="sref">mask & ~(cr2pto_shash_final);
( ="crypwalshash_fi2up_un24/a>{
tfmnbyte href="crypto/shnbyte s="se=EXPORT_SYMBOL_GPL" class=2shash_des2" class="sref">shash_des2 24=shash_align_buffer_size" class2ss="sref"2u8 *( wal    2date" class="sref">crypt2_shas24/a>(alignm2">desc, data,  151}
 150          req iL151" class="reqtruc class="sref">shash_resuls iL151" class="resuls* = , (struct crydo ="sref">mask & ~( walmask & ~(crypto_shash_setkey<2a>(st253c#L83" id="L83" clasL83" class="line" name="line" name="L151iv iL151" class="line" name="L151up* 150          walshash_     crypto_shash *<2a hre25 75{
shash_resuls iL151" class="resuls*(  525/a>{
len) ?:
 name="s conss="sre* 150          walshash_      href="+code=desc" cl2"hash_des2ref">shash_alg *outnbyte href="crypto/shnbyte s="s"L59" class="line" name=""crypwal<_don/a>         wal href="+code=desc" cl2"s="sref"2ef="+code=crypto_shash_a2lg" c2ass="sref">cry} while class="sref">outnbyte href="crypto/shnbyte s="s"_len"0)uf href="+code=desc" cl2"    2="sref">crypto_shash_ali2gnmas25ref="+code=alignmask" class="sr2=key" cla2ss="sref">key & 2data, alignmas2k)
tfm, <2a hre2="+codto/shash.c#L66" id="L66" class="line" name="L66">  66
 href="+code=desc" cl2s="sref">2shash->setkey(<2a href="+2code=tfm" class="sref">t2fmtfm, consasyncc1" iv iL151" class=", consasyncc1" iv*(t2sref">cry2pto_shash_setkey);
<2a hre26desc->tfm;
,
  60       name="a/sha req60"class="line" name="Lreq iL151" class="reqtructde=EXPORT_SYMBOL_GPL" class=2s="L17" c2aass="line" name="L17"> 21ef="26ss="sref">crypto_shash_alg(data,
            ((unsig/sha requass hreta,
s2hash_align_buffer_size(un2629" class="line" name="L129"> 12href="cry2pto/shash.c#L69" id="L692" cla2s="line" name=#L147" id="L147" class="line" name="L147"> class="sref">shash_alg *,
l2en + (  class="sref">shash_flag href="crypto/shflag 47">            ((unsireq iL151" class="reqtruc class="sref">shash_bas/a>        shash_flag href="crypto/shflag 47">e=EXPORT_SYMBOL_GPL" class=2 href="+c2ode=__alignof__" class="2sref"27igned(struct   73st2atic 27_len);
tfm, consa cons="+iv iL151" class=", consa cons="+iv* ae=EXPORT_SYMBOL_GPL" class=2aligned" 2class="sref">shash_updat2e_una27ef="+code=crypto_shash_setkey" c2shash_des2c" class="sref">shash_de2scdata,
t crypto_shash2 *tfm<2/a> = crypto_shash_alg(            ((unsireq iL151" class="reqtruc class="sref">shash_srata,
e=EXPORT_SYMBOL_GPL" class=2 "sref">s2ef="+code=crypto_shash_a2lg" c27/a>(            ((unsisde=tfm" class="srg47"> class="sref">shash_offass="line" name="Loffass47">e=EXPORT_SYMBOL_GPL" class=2 ref="cry2="sref">crypto_shash_ali2gnmas2(shash_nbyte href="crypto/shnbyte s="se=EXPORT_SYMBOL_GPL" class=2ass="sref2">alignmask + 1 -
 122        alig2nmask28igned(struct sh2ash_a2ign_buffer_siz clalass="sref">outnbyte href="crypto/shnbyte s="s"_ltef="+code=shash_fmi"sref">crypto_shmi   strypto/shash.c#L6,de=tfm" class="srg47"> class="sref">shash_lengttfm;
;
td code=tfm" class="sref">tfm<2ef">align2ed));
PTR_ALIGN(&2amp;<28 href="+code=alignmask" class="285">  85<2/a>
,
len) ?:
,d_page  strypto/shash.c#L6,de=tfm" class="srg47">tde=EXPORT_SYMBOL_GPL" class=2Ih" class2ref">unaligned_len &2gt; <28/a>{
 122        id="L117" class="line" name="L117"> 1f">len) ?:
 name="s cons class* 150               shash_final" clasnbyte href="crypto/shnbyte s="s          req iL151" class="reqtruc class="sref">shash_resuls iL151" class="resuls* = out)
,
(  class="sref">shash_flag href="crypto/shflag 47">)uf = data, update( 122        id="L117" class="line" name="L1iniass="sref">buffer =ame="Linia* al(un2align2d_len);
 ae=EXPORT_SYMBOL_GPL" class=2df">align2r ?:
setkey(<2me="L94">2  94               <2a hre29 ke="L122"> 122        2desc<29ode=crypto_shash_setkey" class="2lass="lin2e" name="L97">  97in2t   66
)
<2f">crypto_shash_update(st29=shash_align_buffer_size" class2d = shash_desc *tfm, consasyncc class iL151" class=", consasyncc class*memcpy2s="line" name="L99">  992{29update(crypto_shash<2/a> *29crypto/shash.tfm;
,
  60       name="a/sha req60"class="line" name="Lreq iL151" class="reqtructde=EXPORT_SYMBOL_GPL" class=3m = <3 href="+code=desc" class3"sref30desc->data,
            ((unsig/sha requass hreta,
 = final(3mask" cla3s="sref">crypto_shash_al3gnmas30.c#L83" id="L#L147" id="L147" class="line" name="L147"> class="sref">shash_alg *,
data 3amp; 30desc->L130" id="L130" class="line" name="L150">  class="sref">shash_flag href="crypto/shflag 47">            ((unsireq iL151" class="reqtruc class="sref">shash_bas/a>        shash_flag href="crypto/shflag 47">e=EXPORT_SYMBOL_GPL" class=3ref">alig3mask)
alig3m" name="L97">  97in3  ae=EXPORT_SYMBOL_GPL" class=3 class="s3ef">shash-> 13lass="sre3">EXPORT_SYMBOL_GPL(3a hre30"sref=tfm" class="sref">tfm, consasynccexpors iL151" class=", consasynccexpors* 149        return crypto_shash<3a hre30class="sref">mask & ~(shash_fi3al_un31_alignof__( 15}
 1393shash_des3" class="sref">shash_des3 31de=out" class="sref">out &am3sask" cla3lass="sref">crypto_shash3/a> *31tkey" class="sref">setkey(<3m = <3 href="+code=desc" class3"sref31 tfm, consasynccimpors iL151" class=", consasynccimpors*crypto_shi   struct alig3s="sref">crypto_shash_al3gnmas31 href="+code=tfm" class="sref">t3s5f">alig3ref="+code=crypto_shash_3lg" c31desc->tfm;
,
  60       name="a/sha req60"class="line" name="Lreq iL151" class="reqtructde=EXPORT_SYMBOL_GPL" class=3ref">cryp3o_shash_digestsize(<3 href31ss="sref">crypto_shash_alg(data,
            ((unsig/sha requass hreta,
s3ash_a3129" class="line" name="L129"> 13sref">ali3ned));
 class="sref">shash_alg *,
PTR_ALIGN(3amp;<31ypto/shash.c#L130" id="L130" class="line" name="L150">  class="sref">shash_flag href="crypto/shflag 47">            ((unsireq iL151" class="reqtruc class="sref">shash_bas/a>        shash_flag href="crypto/shflag 47">e=EXPORT_SYMBOL_GPL" class=3e="L121">3121
err<3a> = );
tfmr =ame="Limpors iL151" class="r =ame="Limpors* 150          i"sref">crypto_shi   stre=EXPORT_SYMBOL_GPL" class=3eask" cla3" class="sref">final3 = <3124                g3to  125
, tfmr =exit=ame="Lopssasync iL151" class="r =exit=ame="Lopssasync* =60">  60       name="+code=s ="+code=keylen" 60">  60        if ((u="+code=alignmask" class="3l5f">alig3mcpy(tfm<3eef">cryp3ss="sref">buf, tfm;
,
  60        if ((unsigned long) 139    3   tfm;
t*,
ds);
 131}
 133i33=finae=tfm" class="sref">tfm =60">  60       name="+code=s ="+code=keylen" 60">  60        if ((u="+code=alignmask" class="3l" class=3sref">crypto_shash_final3/a>(s33 href="+code=tfm" class="sref">t3lass="sre3">shash_desc *);L59" class="line"60">  60        if (( class="sref">shash___crtr   unsigned long <__crtr   47">e=EXPORT_SYMBOL_GPL" class=3o_shash" 3lass="sref">crypto_shash3/a> *33" id="L86" clpto_shash_alg(tfm);
 =ame="L   unsigned long <__cr/a> =ame="L   class="line" name="L    unsigned long )unsigned long)m3 href="+code=desc" class3"sref33desc->tfm;
            ((unsi__cr/a> =a/sha h="s iL151" class="__cr/a> =a/sha h="s*  60        if ((unsigned long)->tfm;
,
  60        if ((unsigned long)crypto_shash_al3gnmas33ss="sref">crypto_shash_alg(tfm;
tfm;
out &a3p; alignm3sk)
desc, 3a hre34"+code=out" class="srde=key"-="line" name="LEAGAINunsigned long shash->final(3a href="+3ode=desc" class="sref">d3sctfm;
  60       name="create=60"class="line" name="L    unsigned long ), "line" name="L120"> cr/a> =ame="Ltypef">len) ?:
 name="s constypef ((unsigned long)EXPORT_SYMBOL_GPL(3a hre343class="sref" cla" name="L120"> IS_ERRf">len) ?:
IS_ERRclass="line" name="Lef">tfm;
tfm<3"sref">cr3pto_shash_final);
{
 15="cryptmod_pmeclass="line" name="L    unsigned long )unsigned long)shash_fi3up_un34/a>{
tfmPTR_ERRf">len) ?:
PTR_ERRclass="line" name="Lef">tfm;
shash_des3 34desc->e=crypto_shash_update" clas3ss="sref"3u8 * 13s    3date" class="sref">crypt3_shas34/a>(,
tfm;
alignm3">desc,   60        if (( class="sref">shash_exit>  60      exitsh.c"L59" class="line" name="exit=ame="Lopssasync iL151" class="r =exit=ame="Lopssasync*, (struct cry77" id="L77" clcrs iL151" class="r class="sref">shash_iniass="sref">buffeinia*tsasyncciniass="sref">buffe, consasynccinia* class="sref">shash_s="sref">len) ?:
s="sre*tsasynccs="sref">len) ?:
, consasynccs="sre*crypto_shash_setkey<3a>(st35desc->L130" id="L130"crs iL151" class="r class="sref">shash_1" id="L151" class="151"> 151"L59" class="line"ef">tsasyncc1" id="L151" class=", consasyncc1" id*cr3ref">crypto_shash *<3a hre35 75{
 class="sref">shash_1" iv iL151" class="="+iv*tsasyncc1" iv iL151" class=", consasyncc1" iv*  535/a>{
 class="sref">shash_ class iL151" class=" class*tsasyncc class iL151" class=", consasyncc class*shash_alg *cry cla" name="L120"> code=tfm" class="sfm) class="sref">shash_sass="line" name="L67,u8 *    3="sref">crypto_shash_ali3gnmas35.c#L119" id="L119" class="line" name ns iL151" class="r class="sref">shash_sass="line" name="L67,u8 *<"L59" class="line"ef">tsasyncclass="line" name="L67, consasyncclass="*alignm3ss="sref">key & 3 code=tfm" class="sfm) class="sref">shash_expors iL151" class="expors* class="sref">shash_expors iL151" class="expors*tsasynccexpors iL151" class=", consasynccexpors*tfm, <3a hre36gn_buffer_siz clalass="sref">outcode=tfm" class="sfm) class="sref">shash_impors iL151" class="impors*-> class="sref">shash_impors iL151" class="impors*tsasynccimpors iL151" class=", consasynccimpors*t3fm( class="sref">shash_req17        data,
tfm;
cry3pto_shash_setkey);
<3a hre36igned(struct  31ef="36+code=tfm" cl>( = s3hash_align_buffer_size(un36gn_bue=crypto_shash_update" clas3href="cry3pto/shash.c#L69" id="L693" cla36ref="+code=alignmask" class="sr3="sref">l3en + (tfm, conscompatclass="line" name="L67, conscompatclass="* =f">tfm;
  7/a>                        unsigned int keylen)
  57        struct   73st3atic 37_lentfm<3aligned" 3class="sref">shash_updat3e_una37.c#L83" id="Lpto_shash_alg(data,
  60        if ((unsigned long)shash_de3sc->data,
   c#L147" id="L147" clv iL151" class="" clvsh.cnsigned long)crypto_shash3 *u8 * class="sref">shash_alg *  65 = s3ef="+code=crypto_shash_a3lg" c3729" class="line" name="L129"> 13 ref="cry3="sref">crypto_shash_ali3gnmas37"sref=tfm" class="sref">tfm, conscompatciniass="sref">buffe, conscompatcinia*data,
data,
t alignmask + 1 -
mask & ~(alig3nmask38desc->data,
data,
 class="sref">shash_alg *sh3ash_a3ign_buffer_sizdata,
   c#L147" id="L147" clv iL151" class="" clvsh.cnsigned long)align3ed));
setkey(<3chash_des3s="sref">PTR_ALIGN(&3amp;<38desc->L130" id="L130" class="line" name="L150">  class="sref">shash_flag href="crypto/shflag 47">            ((unsih">data,
 class="sref">shash_flag href="crypto/shflag 47">e=EXPORT_SYMBOL_GPL" class=385">  85<3/a>
unaligned_len &3gt; <38f="+code=data>(buffer =ame="Linia* ae=EXPORT_SYMBOL_GPL" class=3en)
<3a href="crypto/shash.c#L387" i38=updae=crypto_shash_update" clas3I =  13Iref="cry3(tfm, conscompatcs="sref">len) ?:
, conscompatcs="sre*data,
data,
,ypto_shash_alg(data,   65update(mask & ~(un3align39gn_buffer_sizdata,
data,
 class="sref">shash_alg *align3r ?:
data,
   c#L147" id="L147" clv iL151" class="" clvsh.cnsigned long)3  94               <3a hre39desc->3desc<39 75{
tfmnbyte href="crypto/shnbyte s="se=EXPORT_SYMBOL_GPL" class=3lass="lin3e" name="L97">  97in3t (struct crypto_shash_update(st39+code=tfm" clfor class="sref">outnbyte href="crypto/shnbyte s="s"L59" class="line" name=""crypwal<_firssscompata href="crypto/shash.c"crypwal<_firssscompat*data,
, "line" name="L120"> wal<" class="line" ne="L65">  65shash_desc *out)
lass="sref">outnbyte href="crypto/shnbyte s="s"_len"0ufm" class="sref"nbyte href="crypto/shnbyte s="s"L59" class="line"shash.c"crypwal<_don/a>         wal  993{39.c#L119" id="L119" class="line" namenbyte href="crypto/shnbyte s="s"L59" class="line" name="s conss="sref">len) ?:
 name="s conss="sre* 150          walshash_      href="+code=desc" cl3shash" cl3ass="sref">crypto_shash<3/a> *39cryptf href="+code=desc" cl4m = <4 href="+code=desc" class4"sref40_alignof__( = out &am4mask" cla4s="sref">crypto_shash_al4gnmas40tkey" class="sref">setkey(<4+code=dat4" class="sref">data 4amp; 40 tfm, conscompatc1" id="L151" class=", conscompatc1" id*data,
data,
,y                   unsigned int  149        return alig4mask)
t4r5f">alig4m" name="L97">  97in4 ->data,
data,
 class="sref">shash_alg *t4r6f">alig4m">crypto_shash_update( 151 15}
 1394lass="sre4">EXPORT_SYMBOL_GPL(4a hre40"sreft" class="sref">out &am4m9ss="sre4"ss="sref">crypto_shash<4a hre40cryptf href="+code=desc" cl4l_unalign4d" class="sref">shash_fi4al_un41_alig=tfm" class="sref">tfm, conscompatc class iL151" class=", conscompatc class*data,
data,
,ypto_shash_alg(shash_des4 41_len);
 149        return crypto_shash4/a> *41 href="+code=tfm" class="sref">t4m = <4 href="+code=desc" class4"sref41desc->+code=tfme=tfm" class="sref"offass="line" name="Loffass47">            ((unsisde=tfm" class="srg47"> class="sref">shash_offass="line" name="Loffass47">e=EXPORT_SYMBOL_GPL" class=4sef">alig4s="sref">crypto_shash_al4gnmas41 75{
tfme="L122"> 122        alig4ref="+code=crypto_shash_4lg" c41igned(struct cryp4o_shash_digestsize(<4 href41ss="sref">cry clalass="sref">outnbyte href="crypto/shnbyte s="s"_ltef="+code=shash_fmi"sref">crypto_shmi   strypto/shash.c#L6,de=tfm" class="srg47"> class="sref">shash_lengttfm;
;
td code=tfm" class="sref">tfm<4ss4ash_a41s="sref">out)
data,
data,
 class="sref">shash_alg *t4sref">ali4ned));
(data,
   c#L147" id="L147" clv iL151" class="" clvsh.cnsigned long)PTR_ALIGN(4amp;<41 class="sref"s="sref"void" class="line" na     4121
err<4a> = );
  class="sref">shash_flag href="crypto/shflag 47">            ((unsih">data,
 class="sref">shash_flag href="crypto/shflag 47">e=EXPORT_SYMBOL_GPL" class=4eask" cla4" class="sref">final4setkey(<4c = <4124                g4to ,
len) ?:
,d_page  strypto/shash.c#L6,de=tfm" class="srg47">tde=EXPORT_SYMBOL_GPL" class=4line" nam4="L125"> 125
{
 122        id="L117" class="line" name="L117"> 1f">len) ?:
 name="s cons class* 150               shash_final" clasnbyte href="crypto/shnbyte s="s 15}
 1394l5f">alig4mcpy({
,
cryp4ss="sref">buf, out name="yiel href="+code=u8" name="yiel *  class="sref">shash_flag href="crypto/shflag 47">)uf = out)
 15}
 = ali4   out &am4=LIGN" cl4lass="sref">ds);
 131}
 122        id="L117" class="l, conscompatciniass="sref">buffe, conscompatcinia*data,
)uf =  134i43gn_buffer_siz clalass="sref">oute="L122"> 122         return crypto_shash_final4/a>(s43.c#L83" id="L83" clasgotoy               ame="L152"> 15}
 = shash_desc *crypto_shash4/a> *43 75{
 122        id="L117" class="l, conscompatcs="sref">len) ?:
, conscompatcs="sre*data,
,y               sde=tfm" class="srg47"><" class="line" nnbyte href="crypto/shnbyte s="s)uf href="+code=desc" cl4L"sref">m4 href="+code=desc" class4"sref43desc-> clalass="sref">oute="L122"> 122         return cryp4ref="+code=crypto_shash_4lg" c43e=ds" class="ef="crypgotoy               ame="L152"> 15}
 = crypto_shash_al4gnmas4329" class="line" name="L129"> 14m    4 class="sref">out &a4p;  122        id="L117" class="l, conscompatc1" id="L151" class=", conscompatc1" id*data,
,y               ame="L152"> 15}
 1394f">alignm4sk)
desc, 4a hre44"+cod               ame="L152"> 15}
(shash->tfme="L122"> 122        d4scEXPORT_SYMBOL_GPL(4a hre44 href="+code=alignmask" class="4"sref">cr4pto_shash_final);
, tfmr =exit=ame="Lopsscompata href="crypto/shash.cexit=ame="Lopsscompat*  60       name="+code=s ="+code=keylen" 60">  60        if ((u="+code=alignmask" class="4p_unalign4d" class="sref">shash_fi4up_un44ef="+code=tfm" class="sref">tfm<4pa> = shash_des4 44ss="sref">crypto_shash_alg(data,
  60        if ((unsigned long) *crypto_shash_alg(data,
   c#L147" id="L147" clv iL151" class="" clvsh.cnsigned long)crypt4_shas44ref="+code=alignmask" class="sr4s">alignm4">desc, tfm;
t*  class="sref">shash_60">  60        if ((unsigned long), ,
 unsigned long)out &am4s href="+4"+code=alignmask" class=4sref"45tkey" class="sref">setkey(<4sass="sre4ef">crypto_shash_setkey<4a>(st45 tfm="cryptinia=ame="Lopsscompata href="crypto/shash.cinia=ame="Lopsscompat*  60       name="+code=s ="+code=keylen" 60">  60        if ((u="+code=alignmask" class="4ssref">cr4ref">crypto_shash *<4a hre45 href="+code=tfm" class="sref">t4s_unalign4" class="line" name="L564">  545desc->  60      me="L60"de=s ="+code=keylen" crs iL151" class="r   "line" name="L120"> 60">  60        if (( class="sref">shash_crtrf">tfm;
 = shash_alg *);L59" class="line"60">  60        if (( class="sref">shash___crtr   unsigned long <__crtr   47">e=EXPORT_SYMBOL_GPL" class=4"s="sref"4ef="+code=crypto_shash_a4lg" c45ss="sref">crypto_shash_alg(tfm);
 =ame="L   unsigned long <__cr/a> =ame="L   class="line" name="L    unsigned long )unsigned long)    4="sref">crypto_shash_ali4gnmas45.c#L119" id="pto_shash_alg(data,
  60        if ((unsigned long)alignm4ss="sref">key & 4tfm;
,
e=EXPORT_SYMBOL_GPL" class=4>alignmas4k)
data,
e=EXPORT_SYMBOL_GPL" class=4>class="s4 class="sref">tfm, <4a hre46=final" class="sref">final(4> href="+4shash->t4fmcry4pto_shash_setkey);
<4a hre46/a>{
"L59" class="line" name="create=60">  60       name="create=60"class="line" name="L    unsigned long ), "line" name="L120"> cr/a> =ame="Ltypef">len) ?:
 name="s constypef ((unsigned long) 41ef="46ss="sref">cry clalass="sref">outIS_ERRf">len) ?:
IS_ERRclass="line" name="Lef">tfm;
tfm<4="sref">s4hash_align_buffer_size(un46s="sref">out)
 15="cryptmod_pmeclass="line" name="L    unsigned long )unsigned long)tfmPTR_ERRf">len) ?:
PTR_ERRclass="line" name="Lef">tfm;
l4en + (out &am4 href="+c4ode=__alignof__" class="4sref"47igned(struct   73st4atic 47ss="sref">cry77" id="L77" cl" class="line" name="L147">   class="line" nakmalloata,
) +fm" class="sref" name="s cons L1517        tfm;
shash_updat4e_una47.c#L83" id="L83" clasef">cry77" id="L77" clGFP_KERNELfm;
shash_de4sc-> cla!ash_final" clas" class="line" name="L147">) code=tfm" class="sref">tfm<4sclass="s4"L75" class="line" name=4"L75"47 75{
tfm;
t*tfm;
crypto_shash4 *{
 = ->e=crypto_shash_update" clas4 "sref">s4ef="+code=crypto_shash_a4lg" c4729" class="line" name="L129"> 14 ref="cry4="sref">crypto_shash_ali4gnmas47/a>(e=EXPORT_SYMBOL_GPL" class=4ass="sref4">alignmask + 1 -
  class="sref">shash_alg *,
e=EXPORT_SYMBOL_GPL" class=4code=alig4nmask" class="sref">alig4nmask48_alignof__  60        if (( class="sref">shash_exit>  60      exitsh.c"L59" class="line" name="exit=ame="Lopsscompata href="crypto/shash.cexit=ame="Lopsscompat*sh4ash_a48=final" class="sref">final(4ef">align4ed));
 class="sref">shash_iniass="sref">buffeinia*tscompatciniass="sref">buffe, conscompatcinia*PTR_ALIGN(&4amp;<48desc->L130" id="L130"crs iL151" class="r class="sref">shash_s="sref">len) ?:
s="sre*tscompatcs="sref">len) ?:
, conscompatcs="sre*
 class="sref">shash_1" id="L151" class="151"> 151"id="L117" class="l, conscompatc1" id="L151" class=", conscompatc1" id*unaligned_len &4gt; <48/a>{
 class="sref">shash_ class iL151" class=" class*tscompatc class iL151" class=", conscompatc class* = {
 class="sref">shash_sass="line" name="L67,u8 *<"L59" class="line"ef">tscompatclass="line" name="L67, conscompatclass="*s4 14Iref="cry4( class="sref">shash_ class17         *<"L59" class="line"code=tfm" class="sfm) class="sref">shash_ class17         *data, update(( = un5align49nscompatclass="* 13 ref="cra59" class="line"ef">tsc6" class="sref">tfm<3alilh_expors iL151" class=">buffeinia*3 (9f="+c230" id="L130"crs iL151" class="ruash_des43gn_bua hrde=data" clae="create=60">  60me="creaid="L130"crs iL151" class="ruash_des43gn_bua hrde=data" clmass="line" name="smassh.cinia=ame="Lopsscompat*3desc439 7549k" class="4ssrwitch"Ltypef">len)mass="line" name="smassh.cihref="ua hrde=data" clCRYPTO_ALG_TYPE_MASK="line" name="sCRYPTO_ALG_TYPE_MASKctnsigned long) href="+c="crypto/4al<"  4r6f">alig4m">crypto_shash_upda" class=4sref"45tkey" class="sref">setkey(<4sass="sre4ef">crypto_f="crypto/shash.cc#L147" id="L147" clv iL151" class="" clvsh.c"L59" class"line4 name="L120"> walout)
shash_      h5ef="+5ode=desc" cl3shash" cef">tfm;
( = out &am4sk" cla4lass="sref">crypto_sa>,
,
  60me="creailass=4/a> =         return <5 href50   name="+code=s ="+code=keylen"5a hre*data,
len)mass="line" name="smassh.cihref="ua hrde=data" clCRYPTO_ALG_TYPE_MASK="line" name="sCRYPTO_ALG_TYPE_MASKctnsigned long)t4rcaseua hrde=data" clCRYPTO_ALG_TYPE_HASH_MASK="line" name="sCRYPTO_ALG_TYPE_HASH_MASKPL" /4hash.43cryptf href="+5"L151"> 151(}
tfm;5MBOL_GPL<5a>(4a hre40"sreft" class5"sref51de4="sref">l4en + ((, 4a hre44"+cod  f4ss="sref">data, tfm        return <5 href51r" class="4a href="+4ode=desc" 5fass47"> 5          ((unsisde=tfm"5class51h_setkey" c4ass="sref">crypto_sa>,
(<4einia*3 (9f="+c230" nia=ame="Lopsscompat*ali54s="sref">crypto_shash_a54gnma51   name="+code=s ="+code=keylen"5>e="L122"5 122          60        if ((unsigned long)        if ((unsigf="46c#L10signed long)tfmtfm" cde=typto_f="crypto/shash.cc#L147" id="L147" clv iL151" class="" clvsh.c"L59" 5hash.c#L65AGE_SIZEfm;
tscompatclass="line" name=5a hre*data,
s4        if ((unsigf="46c#L7 ns iL151" class="rtfm);
<>        if ((unsigf="46c#L)7 ns iL151" class="r   "+cod  f4ss="sref">data, 5TR_ALIGN(4amp;<41 cl5ss="s5ef"s=">);
tfm     5      ((unsih">data,5crypto_sa>,
 class="sref">shasha>,
 cla<3alilh_expors iL151" class=">buffhref="tt/shash.cnsigned long)e=EXPORT5SYMBO5_GPL" me="+code=s ="+code=keylen"5atomia  s5rypto/shash.c#L6,d_pagef5>len<5a>) ?:
,d_page6f">alig4m">crypto_shaline" name=#L147" id="L147 ns iL151" class="rcramctxline" nakmalloataamctxline<3al4ss="sref">data, ali5hash_final" clasnbyte hr5f="cr5pto/sh>);
tfm,
 class="sref">shash5el * class="sref">shash5e hre*,
 = 5emset4 cl5s42="line" name=t" class5"sref53ypto/shash.c#Lsh_alg(buffe,5consc53shash_alg"3de=update3" class="sref">updatng <__crtr   47">e=EXPORT_SYMBOL_GPL" class=4"s=sng <__crtr   47">e=rypto_shash_a4lg" c45ss="sref">crypto_shash_alg(tfm);
     54s="line" name="L133"> 15453PL" class=4/a> = c5ypto_shash_final4/a>(s435c#L8353line"ef">tscompatciniass="srsnprI =fd="L130"crs iL15nprI =fs="sref">tfm);
len) ?ae="create=60">  60me="creaid="L130"crs iL15CRYPTO_MAX_ALG_NAME="line" name="sCRYPTO_MAX_ALG_NAMEcreaid=span"line" natrI g">"%s""ef="+" 15}
 =5shasrde3=mask36ypto/=tfmrc#L130" sref">len) ?blockline" nakmalloataamblockline30" id="L130" class="line" name5lsef">ali5>,y               sde=tf5" cla53="l, conscompatc1" id="L151"rde3=mask36ypto/=tfmrc#L130" sref">len) ?me="L129"> 14Iref="cry4(e=rypto_s7 ns iL151" class="r class="sref">shash_ class17         *<"54L"sref">54 href="+code=desc" clas54"sre53ref"="L147"> class="sref">shash5p4ref="+c5de=crypto_shash_4lg" c435=ds" 53href="+code3sa> = shashnlao/shash.ctd code=tfnlao/shs="sref">tfm);
 15}
 =5("L59" clrde3=mask36ypto/=tfmrc#L130" de=46.c#L83" id="L cla!ash_f5atc1" id*5a h#L147" id="L147h">dat5,53me="L147">   c#L147" s="sref">oute="L122"nlao/sh_failurass="sref">shashnlao/sh_failura/a>         *<"5ame="L1525> 15}
data, des54Lopsscompata href="crypto/shash5lass="s4e5">shash->oute="L122"nlao/sh_failurass="sref">shashnlao/sh_failura/a> /4hash.43cryptf href="+5e="L122">5122        tfm;
         *<"5atomia  s5">d4sc);
tfm  605/a>  5    na#else);
tfm5a>        if ((u="+code=5lignm5sk" cl" clas3I = ,
5to/shash.5#L147" id="L147" class="5ine" 548PL" class=4css="sreef">tfm;
         *<"5atc1" id*5class="" clvsh.cnsigned 5ong)<5 href=>);
tfmt*<5 hL150" id="L150" class=5line"5name="#endif);
tfm,
<55Lopsscompata href="crypto/shash5ass="line5 name="L150"> unsigned l5ng) &am4lass="sre4">EXPORT_SYMBOL_Ghrefkmshowss="line" name=a>,
tscompatciniass="sr__attrIbute___alg(tfm);
 *<"5="+code=d5ta" classshash.c60">  605/a>  55h_setkey" c4lass="sre4">EXPORT_SYMBOL_Ghrefkmshowss="line" name=a>,
 *<"5="+code=d5a>        if ((u="+code=5lignm55   name="+code=s ="+code=keylen"5"line" na5e="L120"> 60">  60  5     5f (( class="sref">shash_crtrf">tfmupdatng <__crtr   47">e=EXPORT_SYMBOL_GPL" class=4"s=sng <__crtr   47">e=rypto_shash_a4lg" c45ss="sref">crypto_shash_alg(tfm);
  60    5   if55"ef">tscompatclass="line" name=5"__cr/a> 5ame="L   unsigned long <5_cr/a55GPL" class=4c"sref">s4tfm);
"me=" c#L147" : ne" n\n"tfm);
"blockline47" : %u\n"amblockline30" nid="L130" class="line" name5ode=tfm" 5lass="sref">tfm;
(tfm);
"_ class17<7" : %u\n"e=rypto_s7 ns iL151" class="r class="sref">shash_ class17 nid="L130" class="line" name5ode=desc"5tfm" clref="+">data,5(e=EXPORT5SYMBO56PL" class=4/a> =  &am4constdlh_expors iL151" class=">buffme="create=60">  60   me="crea="sre4">EXPORT_SYMBOL_Ghrefkmme="create=60">  60       name="creahasme="+code=s ="+code=keylen"5m" class=5sref">t4fmlen) ?ctxline" nakmalloata,
 = len) ?ex> class="sref">shashex> cla<3alXPORT_SYMBOL_GPL" class=4line" ex> class="sref">shasha>,
 cla<3alilass=4/a> = ), "line" n5me="L520"> cr/a> =amsref">len) ?">final(4ef">align4ed));
shasha>,
tfm<3alilass=4/a> = outIS_ERRf">len<5a>) ?5
IS_ERRclass="sref">len) ?">fifeinia*(<4ein<3alXPORT_SYMBOL_GPL" class=4line" a>(<4einia* 5"cryptmod_pme="L152"> 155/a>="5ryptmo#ifdefua hrde=data" clCONFIG_PROC_FSo/shash.c#L6,deCONFIG_PROC_FSL" class=4/a> = tfmPTR_ERRf">len5/a>) 5:
PTR_ERRclasssref">len) ?showss="line" name=show<3alXPORT_SYMBOL_GPL" class=4line" showss="line" name=a>,
 = tfmout &am4 sref">len) ?re class="line" name=re cla<3alXPORT_SYMBOL_GPL" class=4line" re class="line" name=a>,
 =         len) ?massclea"L152"> 15}
massclea"<3alXPO~="L130"crs iL15CRYPTO_ALG_TYPE_MASK="line" name="sCRYPTO_ALG_TYPE_MASKctnsilass=4/a> = cry77" id="L7sref">len) ?massme="s cons class*shash_de4sc<5a47de57="+code=PTR4lsref">len) ?ae="create=60">  60me="creaXPORT_SYMBOL_GPL" CRYPTO_ALG_TYPE_SHASH="line" name="sCRYPTO_ALG_TYPE_SHASHctnsilass=4/a> = tfm;
len) ?ein class="sref">shashein clacreaXPORT_SYMBOL_GPL" a hL15ofd="L130"crs iL1a hL15of<3alilh_expors iL151" class>  60        if ((unsigned long) = 4 *{
->e=crypto5shash57pdate"  hL150" id="L150"60">  60        if ((unsigned long)        if ((unsigned lononloc/a>   <3aliconstdcharhref="+code4sa> =lin_=crye" name=#L147" id=_=cryhrefid="L130"crs iL151" class="ruash_des43gn_bua hrde=data" clae="create=60">  60me="creailass=4/a> =    c#L147"                         ="L130"crs iL151" class="ruash_des43gn_bua hrde=data" clmass="line" name="smassh.cinia=ame="Lopsscompat*  5lass="sref">shash_algtfm);
"L59" class="line" name="create=60">  60       name="creaid="L130"crs iL15ae="create=60">  60me="creaid="L130"crs iL15mass="line" name="smassh.cinid="L130" class="line" name5cexit=ame5"Lopsscompat*);
tfmbuffeinia*tfm;
tfm);
        if ((unsigned lononloc/a>   <3alnid="L130" class="line" name5c" class=5) ?:
s="sre* 151"id="L115" cla5s="l, a> &am4m9ss="sre4"ss="sref">cryppre aretng <__crtr   47">e=EXPORpre aretng <3alilh_expors iL151" classsupdatng <__crtr   47">e=EXPORT_SYMBOL_GPL" class=4"s=line" name=#L147" id="L14nia=ame="Lor class17 *<"5 iL151" c5ass=" class*me="+code=s ="+code=keylen"5xlong  *<"L59" cla5s="li58( class="sref">shash___crtr   unsig=">buffhref="tt/shash.cnsigned long)  545desc   c#L147" id="L147" 559" class5"line"code=tfm" class="s5m58me="L147">   a> = shashline" name=#L147" id="L147 ns iL151" class="r class="sref">shash_ class17   ns ="L    unsigned l  strypto/shash.c#L6,de=tfm" class=" / 8 ||147">   c#L147" id="L147" 5        *   c#L147" id="L147" 5 itsh.c"L5f href="+code=desc" 5l4de=59rr" class="4e="L1="L130"crs iL15line" name=#L147" id="L147 ns iL151" class="ra> &eline" nakmalloata &eline hr7X ns ="L    unsigned l  strypto/shash.c#L6,de=tfm" class=" / 8nia=ame="Lor class17 *<"5a 49_alig5of__( = 5a hre59 L1517tfm;
shasbase" nakmalloata  60"L59" class="line" name="create=60">  60       name="crea        *<"5ad="L151"5desc" class="sref">3desc539 7559k" class="4ssass="sre4">shasbase" nakmalloataoa>amf="cr hr7X ef="PO~="L130"crs iL15CRYPTO_ALG_TYPE_MASK="line" name="sCRYPTO_ALG_TYPE_MASKctns        *<"5aiL151" c5pto/shnbyte s="se=EXPORT5SYMBO59"ef">tscompatc class iL151" base" nakmalloataoa>amf="cr hr7X|PORT_SYMBOL_GPL" CRYPTO_ALG_TYPE_SHASH="line" name="sCRYPTO_ALG_TYPE_SHASHctns        *<"5along  =  walout)
 *<"5walshash_        c#L147" GFP_KERNELfme=EXPORfinur_unal cla4ctns        *<"6href="cry6to/shnbyte s="s)uf h6ef="+6ode=desc" cl3s7" clGFP_KERNELfmunania=ame="Lor class17 *<"6<4 href="6code=desc" class4"sref406align60rr" class="4e="L121">4121
unacrypto/shash.c#L487" i48s4ref"_unal cla4<__crtr   47">e=EXPORs4ref"_unal cla4ctns        *<"6h2 href="6cf__( = 6YMBOL60GPL" class=4>class="s4 class="sreline" name=#L147" id="L147 ns iL151" class="rex class="line" name=ex cla>unansme="+code=s ="+code=keylen"6crypto_sh6sh_4lg" c40de=out" class6"sref60GPL" class=4eask" cla4" class="sref"line" name=#L147" id="L147 ns iL151" class="rex class="line" name=ex cla>unacrypto/shash.c#L487" i48sefault_ex class="line" name=7" i48sefault_ex clactns        *<"6h4ypto_sh6ssr"crypwalunacrypto/shash.c#L487" i48sefault_im class="line" name=7" i48sefault_im clactns        *<"6h5ypto_sh6sesc" class="sref">3desc6 href60to/shnbyte s="s &eline hr7Xde=buf"4 clas48="line" name=#L147" id="L147 ns iL151" class="rdata,
t4rclass="s4 class="sreline" name=#L147" id="L147 ns iL151" class="r_GPL" class=4ca> =  *<"6<8g *6aname="L120"> wal =  *6a"sref">shash_     (4a hre40"sreft" class6"sref61GPL" class=4css="sref4ss="sref">data, (( =         return <6 href61r" clI = e=EXPORT_SYMBOL_GPL" class=4"s=line" name=#L147" id="L14nia=ame="Lor class17 *<"6fass47"> 6          ((unsisde=tfm"6class61   name="+code=s ="+code=keylen"64sef">ali64s="sref">crypto_shash_a64gnma61k" class="4ssref">cr4ref">crypto_sh=">buffhref="tt/shash.cnsigned long)  545desce="L122"6 122         15}
(;
tscompatclass="line" name=6a hre*data,
s4crypto_shash_al4gnmas4329" class="line" name="pre aretng <__crtr   47">e=EXPORpre aretng <3aliGPL" class=4"s=line" name=#L147" id="L14n>( *6#L147" id="L147" class="6ine" 61me="L147">   a> = shashhref="crypto/shnbyte s="s)uf href="+code=desc" c6s="sref">6TR_ALIGN(4amp;<41 cl6ss="s62GPL" class=4c    s=4css="sre 15}
(     6      ((unsih">data,6(e=EXPORT6SYMBO6_GPL" >(len<6a>) ?:f">tfm;
tfm);
        if ((unsigned lonregister/a>   <3al)>(ali6hash_final" clasnbyte hr6f="cr6pto/sh(,
e=EXPORT_SYMBOL_GPL" class=4"s=line" name=#L147" id="L14nia=ame="Lor class17 *<"6el *6e hre*  545desc( *6}
 = );
tfmtfm;
tfm);
        if ((unsigned lonunregister/a>   <3al)>(buffe,6consc63Lopsscompata href="crypto/shash6l7">     64s="line" name="L133"> 164643gn_bI = shasha>,
   ee<3alilh_expors iL151" classsupdatng <__crtr   47">e=EXPORT_SYMBOL_GPL" class=4"s=liness="sref">shashlineYMBO,3I =  *<"6=4sref">c6ypto_shash_final4/a>(s436c#L8363GPL" me="+code=s ="+code=keylen"6ltomia  s6"> 15}
 =6 *<"6lsef">ali6>,y               sde=tf6" cla63to/sh(64 href="+code=desc" clas64"sre63 =a/sha h="s*for = shashiss="line" name=iYMBO3290 ="L    unsigned iss="line" name=iYMBO3&ls ="L    unsigned aounass="line" name=aouna"L14 ="L    unsigned iss="line" name=iYMBO++nsme="+code=s ="+code=keylen"6p4ref="+c6de=crypto_shash_4lg" c436=ds" 63href="+code3sclass=4c"sref">s4        if ((unsigned lonregister/a>   <3ali="L564">  545descshashlineYMBO["L    unsigned iss="line" name=iYMBO])>( 15}
 =6shashre="s cons class* *<"6=9g *6a h#L147" id="L147h">dat6,63me="L147">   c#L147"         s="sref">oute="L122"e="L152"> 15}
();
tfmdes64Lopsscompata href="crypto/shash6lass="s4e6">shash->data, 6122        d4sc) ?:f">tfm;
 15}
 href="+6="+code=d6ta" classshash.c60">  606/a>  645=a/sha h="s*for =-ef">tfm;
tfm;
 *<"6=L"sref">6a>        if ((u="+code=6lignm646ref="+code3sclass=4c"sref">s4,
        if ((unsigned lonunregister/a>   <3ali="L564">  545descshashlineYMBO["L    unsigned iss="line" name=iYMBO])>(tscompatclass="line" name=6to/shash.6#L147" id="L147" class="6ine" 648PL" class=4css="sre *<"6atc1" id*6class="" clvsh.cnsigned 6ong)<6 href=>);
tfmt*<6 hL150" id="L150" class=6line"65ypto/f">tfm;
tfm);
   eess="sref">shasha>,
   ee<3al)>(,
<65Lopsscompata href="crypto/shash6ass="line6 name="L150"> unsigned l6ng)shasha>,
   ee<3alilh_expors iL151" classsupdatng <__crtr   47">e=EXPORT_SYMBOL_GPL" class=4"s=liness="sref">shashlineYMBO,3I =  *<"6ned long)6a h4ef="+45de=out" class6"sref65GPL" me="+code=s ="+code=keylen"6="+code=d6ta" classshash.c60">  606/a>  65="+code=PTR4lI =  *<"6="+code=d6a>        if ((u="+code=6lignm65to/sh( 60">  60  6     65 =a/sha h="s*for = shashiss="line" name=iYMBO329tfm;
  60    6   if65href="+code3sclass=4c"sref">s4        if ((unsigned lonunregister/a>   <3ali="L564">  545descshashlineYMBO["L    unsigned iss="line" name=iYMBO])>( 6ame="L   unsigned long <6_cr/a65yptmod_pmeclass="linea> = shashre="s cons class* *<"6lass="lin6" name="  i hreta,
<6 href65me="L147">   c#L147"          shashpr_e="L152"> 15}
pr_e="s="srespan"line" natrI g">"Failed "srunregister %s %s: %d\n" *<"6ode=tfm" 6lass="sref">tfm;
shashliness="sref">shashlineYMBO["L    unsigned iss="line" name=iYMBO]sref">len) ?base" nakmalloatalen) ?cra_driver/=crye" name=#L147" cra_driver/=cryYMBO,ia=ame="Lor class17 *<"6ode=desc"6tfm" clref="+">data,6#L147"          shashliness="sref">shashlineYMBO["L    unsigned iss="line" name=iYMBO]sref">len) ?base" nakmalloatalen) ?cra_=crye" name=#L147" cra_=cryhrefid="L130"crs iL15re="s cons class*(e=EXPORT6SYMBO662PL" class=4c>);
tfmt4fmdata, );
tfm), "line" n6me="L620"> cf">tfm;
tfm);
   eess="sref">shasha>,
   ee<3aln>(outIS_ERRf">len<6a>) ?66"ef">tscompatclass="line" name=6N__cr/a> 6"cryptmod_pme="L152"> 156/a>="6ryptmom9ss="sre4"ss="sref">crypregister/instance" nakmalloatacrypregister/instance<3alilh_expors iL151" classa>,
,
 *<"6oass="lin6ef">tfmPTR_ERRf">len6/a>) 66me="L147">   c#L147"             lh_expors iL151" classsupdatinstance" nakmalloatacrypinstance<3alL_GPL" class=4"s=instss="line" name=inf">unania=ame="Lor class17 *<"6out &am4 I =  15}
( = tscompatciniass="srf">crypto_shash_al4gnmas4329" class="line" name="pre aretng <__crtr   47">e=EXPORpre aretng <3ali="L564">  545descuna7 ns iL151" class="rline" name=#L147" id="L14n>(shash_de4sc<6a47de67="+code=PTR4la> = shashhref="crypto/shnbyte s="s)uf href="+code=desc" c6tfm;
 15}
(4 *{
 class="sref">shash6 long tfm);
tfm);
crypigned linstances="sref">tfm);
unann>( 6f47desc->e=crypto6shash67pdate>);
tfmtfm;
tfm);
<">crypregister/instance" nakmalloatacrypregister/instance<3aln>(  6lass="sref">shash_algl4en + (EXPORT_Sa>crypfree/instance" nakmalloatacrypfree/instance<3alilh_expors iL151" classa>,
unania=ame="Lor class17 *<"6cexit=ame6"Lopsscompat*buffeinia*tscompatciniass="srigned ldrop_spawn" nakmalloatatfm);
tfm);
unann>(shaskfreess="line" name=kfrees="sref">tfm);
<">crypinstance" nakmalloatacrypinstance<3alref">tfm);
unann>( 151"id="L116" cla68to/sh>);
tfm cf">tfm;
tfm);
crypfree/instance" nakmalloatacrypfree/instance<3aln>(tscompatclass="line" name=6cass=4"sr6ompatclass="*spawn" nakmalloataspawn<3alilh_expors iL151" classa>,
spawn" nakmalloataspawn<3alL_GPL" class=4"s=spawn" nakmalloata *<"659" class6"line"code=tfm" class="s6m68me="L147">   c#L147"             lh_expors iL151" classsupdatng <__crtr   47">e=EXPORT_SYMBOL_GPL" class=4"s=line" name=#L147" id="L14,ia=ame="Lor class17 *<"6        *,
unania=ame="Lor class17 *<"6 itsh.c"L6f href="+code=desc" 6l4de=69rr" cme="+code=s ="+code=keylen"6a 49_alig6of__( = 6a hre692PL" class=4css="sre  545desc"L59" clline" name=#L147" id="L147 ns iL151" class="rbase" nakmalloatauna,ia=ame="Lor class17 *<"6 _iniass=6>un5align49nscompatclass6"*"L59" class="line" name="create=60">  60       name="crean>(tfm3desc639 7569k" clf">tfm;
tfm);
spawn" nakmalloataspawn<3aln>( class="sref">shash6along shash_crtrf">tfmupdatng <__crtr   47">e=EXPORT_SYMBOL_GPL" class=4"s=sEXPORTttr/href="tt/shash.cnssEXPORTttr/hre<3alilh_expors iL151" classrtTttr"s cons class*  60me="creai ="L130"crs iL151" class="ruash_des43gn_bua hrde=data" clmass="line" name="smassh.cinia=ame="Lopsscompat* waloutshash_        lh_expors iL151" class=">buffhref="tt/shash.cnsigned long) h7ef="+70de4="sref">l4en + ( =line" name=#L147" id="L14XPORT_SYMBOL_GPL" class=4Tttr/hre class="ruash_dea>,
tfm);
"L59" class="line" name="create=60">  60       name="creaid="L130"crs iL15ae="create=60">  60me="creaid="L130"crs iL15mass="line" name="smassh.cinid="L130" class="line" name7h2 href="7cf__( = 7YMBOL702PL" class=4css="sretfm);
tfm);
"L59" claontae=or_ofd="L130"crs iL1aontae=or_ofs="sref">tfm);
updatng <__crtr   47">e=EXPORT_SYMBOid="L130"crs iL15base" nakmalloatatfm3desc7 href70k" clf">tfm;
tfm);
 class="sref">shash7alg *7a href="+code=sde=EXPORT7SYMBO7ass="sef">tfm);
"GPa" *7aname="L120"> waltfm);
"Synchronous lass="graphic ne"  me="" *7a"sref">shash_     


shafooter"> The original LXR software by the ="L130" chttp://sourceforge.net/projects/lxr">LXR communs=yYMBOidthis experimental version by ="L130" cmailto:lxr@sh_ux.no">lxr@sh_ux.nogn_bs
shasubfooter"> lxr.sh_ux.no kindly hosted by ="L130" chttp://www.redpill-sh_pro.no">Redpill Lh_pro ASYMBOidprovider of Lh_ux4consultI g and operations services since 1995.