linux/crypto/md4.c
<<
ion /spa15. /form5. a ion href="../linux+v3.7.9/crypto/md4.c">ion img src="../.static/gfx/right.png" alt=">>">io /spa15.io spa1 class="lxr_search">ion ion input typon>hidden" namon>navtarget" option>">ion input typon>text" namon>search" idn>search">ion butt submit">Searchion Prefs. /a>io /spa15.n /div5.n form acv3.1="ajax+*" method="post" onsubmit="return false;">io input typon>hidden" namon>ajax_lookup" idn>ajax_lookup" option>">in /form5.in div class="headingbott m">search_results" class="search_results". 5.n /div5. div idn>content">. div idn>file_contents"5
21/f0/dcf0e05e50327263e02aa179ea26907d4133_3/0"5L1" class="line" namon>L1">   1 /a> spa1 class="comment">/*  /spa15.L2" class="line" namon>L2">   2 /a> spa1 class="comment"> * Cryptographic API. /spa15.L3" class="line" namon>L3">   3 /a> spa1 class="comment"> * /spa15.L4" class="line" namon>L4">   4 /a> spa1 class="comment"> * MD4 Message Digest Algorithm (RFC1320). /spa15.L5" class="line" namon>L5">   5 /a> spa1 class="comment"> * /spa15.L6" class="line" namon>L6">   6 /a> spa1 class="comment"> * Implementa
  L7" class="line" namon>L7">   7 /a> spa1 class="comment"> * CIFS MD4 implementa
  <, and the cryptoapi implementa
  < /spa15.L8" class="line" namon>L8">   8 /a> spa1 class="comment"> * originally based  L9" class="line" namon>L9">   9 /a> spa1 class="comment"> * by Colin Plumb in 1993. /spa15.L10" class="line" namon>L10">  11"
a> spa1 class="comment"> * /spa15.L11" class="line" namon>L11">  11 /a> spa1 class="comment"> * Copyright (c) Andrew Tridgell 1997-1998. /spa15.L12" class="line" namon>L12">  12 /a> spa1 class="comment"> * Modified by Steve French (sfrench@us.ibm.com) 2002 /spa15.L13" class="line" namon>L13">  13 /a> spa1 class="comment"> * Copyright (c) Cryptoapi developers. /spa15.L14" class="line" namon>L14">  14 /a> spa1 class="comment"> * Copyright (c) 2002 David S. Miller (davem@redhat.com) /spa15.L15" class="line" namon>L15">  15 /a> spa1 class="comment"> * Copyright (c) 2002 Jamos Morris <jmorris@intercode.com.au> /spa15.L16" class="line" namon>L16">  16 /a> spa1 class="comment"> * /spa15.L17" class="line" namon>L17">  17 /a> spa1 class="comment"> * This program is free software; you ca1 redistribute it and/or modify /spa15.L18" class="line" namon>L18">  18 /a> spa1 class="comment"> * it under/the terms of/the GNU General Public License as published by /spa15.L19" class="line" namon>L19">  19 /a> spa1 class="comment"> * the Free Software Founda
  <; either/vers  < 2 of/the License, or /spa15.L20" class="line" namon>L20">  21"
a> spa1 class="comment"> * (at your   v3.1) any later/vers  <. /spa15.L21" class="line" namon>L21">  21 /a> spa1 class="comment"> * /spa15.L22" class="line" namon>L22">  22 /a> spa1 class="comment"> */ /spa15.L23" class="line" namon>L23">  23 /a>#include <crypto/internal/hash.h /a>>.L24" class="line" namon>L24">  24 /a>#include <linux/init.h /a>>.L25" class="line" namon>L25">  25 /a>#include <linux/kernel.h /a>>.L26" class="line" namon>L26">  26 /a>#include <linux/module.h /a>>.L27" class="line" namon>L27">  27 /a>#include <linux/string.h /a>>.L28" class="line" namon>L28">  28 /a>#include <linux/typos.h /a>>.L29" class="line" namon>L29">  29 /a>#include <asm/byteorder.h /a>>.L30" class="line" namon>L30">  31"
a>.L31" class="line" namon>L31">  31 /a>#define  a href="+code=MD4_DIGEST_SIZE" class="sref">MD4_DIGEST_SIZE /a>         16.L32" class="line" namon>L32">  32 /a>#define  a href="+code=MD4_HMAC_BLOCK_SIZE" class="sref">MD4_HMAC_BLOCK_SIZE /a>     64.L33" class="line" namon>L33">  33 /a>#define  a href="+code=MD4_BLOCK_WORDS" class="sref">MD4_BLOCK_WORDS /a>         16.L34" class="line" namon>L34">  34 /a>#define  a href="+code=MD4_HASH_WORDS" class="sref">MD4_HASH_WORDS /a>          4.L35" class="line" namon>L35">  35"
a>.L36" class="line" namon>L36">  36 /a>struct  a href="+code=md4_ctx" class="sref">md4_ctx /a> {.L37" class="line" namon>L37">  37 /a>         a href="+code=u32" class="sref">u32 /a>  a href="+code=hash" class="sref">hash /a>[ a href="+code=MD4_HASH_WORDS" class="sref">MD4_HASH_WORDS /a>];.L38" class="line" namon>L38">  38 /a>         a href="+code=u32" class="sref">u32 /a>  a href="+code=block" class="sref">block /a>[ a href="+code=MD4_BLOCK_WORDS" class="sref">MD4_BLOCK_WORDS /a>];.L39" class="line" namon>L39">  39 /a>         a href="+code=u64" class="sref">u64 /a>  a href="+code=byte_count" class="sref">byte_count /a>;.L40" class="line" namon>L40">  41"
a>};.L41" class="line" namon>L41">  41"
a>.L42" class="line" namon>L42">  42 /a>static  a href="+code=inline" class="sref">inline /a>  a href="+code=u32" class="sref">u32 /a>  a href="+code=lshift" class="sref">lshift /a>( a href="+code=u32" class="sref">u32 /a>  a href="+code=x" class="sref">x /a>, unsigned int  a href="+code=s" class="sref">s /a>).L43" class="line" namon>L43">  43 /a>{.L44" class="line" namon>L44">  44 /a>         a href="+code=x" class="sref">x /a> &= 0xFFFFFFFF;.L45" class="line" namon>L45">  45 /a>        return (( a href="+code=x" class="sref">x /a> <<  a href="+code=s" class="sref">s /a>) & 0xFFFFFFFF) | ( a href="+code=x" class="sref">x /a> >> (32 -  a href="+code=s" class="sref">s /a>));.L46" class="line" namon>L46">  46 /a>}.L47" class="line" namon>L47">  47"
a>.L48" class="line" namon>L48">  48 /a>static  a href="+code=inline" class="sref">inline /a>  a href="+code=u32" class="sref">u32 /a>  a href="+code=F" class="sref">F /a>( a href="+code=u32" class="sref">u32 /a>  a href="+code=x" class="sref">x /a>,  a href="+code=u32" class="sref">u32 /a>  a href="+code=y" class="sref">y /a>,  a href="+code=u32" class="sref">u32 /a>  a href="+code=z" class="sref">z /a>).L49" class="line" namon>L49">  49 /a>{.L50" class="line" namon>L50">  50 /a>        return ( a href="+code=x" class="sref">x /a> &  a href="+code=y" class="sref">y /a>) | ((~ a href="+code=x" class="sref">x /a>) &  a href="+code=z" class="sref">z /a>);.L51" class="line" namon>L51">  51 /a>}.L52" class="line" namon>L52">  52"
a>.L53" class="line" namon>L53">  53 /a>static  a href="+code=inline" class="sref">inline /a>  a href="+code=u32" class="sref">u32 /a>  a href="+code=G" class="sref">G /a>( a href="+code=u32" class="sref">u32 /a>  a href="+code=x" class="sref">x /a>,  a href="+code=u32" class="sref">u32 /a>  a href="+code=y" class="sref">y /a>,  a href="+code=u32" class="sref">u32 /a>  a href="+code=z" class="sref">z /a>).L54" class="line" namon>L54">  54 /a>{.L55" class="line" namon>L55">  55 /a>        return ( a href="+code=x" class="sref">x /a> &  a href="+code=y" class="sref">y /a>) | ( a href="+code=x" class="sref">x /a> &  a href="+code=z" class="sref">z /a>) | ( a href="+code=y" class="sref">y /a> &  a href="+code=z" class="sref">z /a>);.L56" class="line" namon>L56">  56 /a>}.L57" class="line" namon>L57">  57"
a>.L58" class="line" namon>L58">  58 /a>static  a href="+code=inline" class="sref">inline /a>  a href="+code=u32" class="sref">u32 /a>  a href="+code=H" class="sref">H /a>( a href="+code=u32" class="sref">u32 /a>  a href="+code=x" class="sref">x /a>,  a href="+code=u32" class="sref">u32 /a>  a href="+code=y" class="sref">y /a>,  a href="+code=u32" class="sref">u32 /a>  a href="+code=z" class="sref">z /a>).L59" class="line" namon>L59">  59 /a>{.L60" class="line" namon>L60">  60 /a>        return  a href="+code=x" class="sref">x /a> ^  a href="+code=y" class="sref">y /a> ^  a href="+code=z" class="sref">z /a>;.L61" class="line" namon>L61">  61 /a>}.L62" class="line" namon>L62">  62"
a>.L63" class="line" namon>L63">  63 /a>#define  a href="+code=ROUND1" class="sref">ROUND1 /a>( a href="+code=a" class="sref">a /a>, a href="+code=b" class="sref">b /a>, a href="+code=c" class="sref">c /a>, a href="+code=d" class="sref">d /a>, a href="+code=k" class="sref">k /a>, a href="+code=s" class="sref">s /a>) ( a href="+code=a" class="sref">a /a> =  a href="+code=lshift" class="sref">lshift /a>( a href="+code=a" class="sref">a /a> +  a href="+code=F" class="sref">F /a>( a href="+code=b" class="sref">b /a>, a href="+code=c" class="sref">c /a>, a href="+code=d" class="sref">d /a>) +  a href="+code=k" class="sref">k /a>,  a href="+code=s" class="sref">s /a>)).L64" class="line" namon>L64">  64 /a>#define  a href="+code=ROUND2" class="sref">ROUND2 /a>( a href="+code=a" class="sref">a /a>, a href="+code=b" class="sref">b /a>, a href="+code=c" class="sref">c /a>, a href="+code=d" class="sref">d /a>, a href="+code=k" class="sref">k /a>, a href="+code=s" class="sref">s /a>) ( a href="+code=a" class="sref">a /a> =  a href="+code=lshift" class="sref">lshift /a>( a href="+code=a" class="sref">a /a> +  a href="+code=G" class="sref">G /a>( a href="+code=b" class="sref">b /a>, a href="+code=c" class="sref">c /a>, a href="+code=d" class="sref">d /a>) +  a href="+code=k" class="sref">k /a> + ( a href="+code=u32" class="sref">u32 /a>)0x5A827999, a href="+code=s" class="sref">s /a>)).L65" class="line" namon>L65">  65 /a>#define  a href="+code=ROUND3" class="sref">ROUND3 /a>( a href="+code=a" class="sref">a /a>, a href="+code=b" class="sref">b /a>, a href="+code=c" class="sref">c /a>, a href="+code=d" class="sref">d /a>, a href="+code=k" class="sref">k /a>, a href="+code=s" class="sref">s /a>) ( a href="+code=a" class="sref">a /a> =  a href="+code=lshift" class="sref">lshift /a>( a href="+code=a" class="sref">a /a> +  a href="+code=H" class="sref">H /a>( a href="+code=b" class="sref">b /a>, a href="+code=c" class="sref">c /a>, a href="+code=d" class="sref">d /a>) +  a href="+code=k" class="sref">k /a> + ( a href="+code=u32" class="sref">u32 /a>)0x6ED9EBA1, a href="+code=s" class="sref">s /a>)).L66" class="line" namon>L66">  66"
a>.L67" class="line" namon>L67">  67 /a> spa1 class="comment">/* XXX: this stuff ca1 be   v3mized */ /spa15.L68" class="line" namon>L68">  68 /a>static  a href="+code=inline" class="sref">inline /a> void  a href="+code=le32_to_cpu_array" class="sref">le32_to_cpu_array /a>( a href="+code=u32" class="sref">u32 /a> * a href="+code=buf" class="sref">buf /a>, unsigned int  a href="+code=words" class="sref">words /a>).L69" class="line" namon>L69">  69 /a>{.L70" class="line" namon>L70">  70 /a>        while ( a href="+code=words" class="sref">words /a>--) {.L71" class="line" namon>L71">  71 /a>                 a href="+code=__le32_to_cpus" class="sref">__le32_to_cpus /a>( a href="+code=buf" class="sref">buf /a>);.L72" class="line" namon>L72">  72 /a>                 a href="+code=buf" class="sref">buf /a>++;.L73" class="line" namon>L73">  73 /a>        }.L74" class="line" namon>L74">  74 /a>}.L75" class="line" namon>L75">  75"
a>.L76" class="line" namon>L76">  76 /a>static  a href="+code=inline" class="sref">inline /a> void  a href="+code=cpu_to_le32_array" class="sref">cpu_to_le32_array /a>( a href="+code=u32" class="sref">u32 /a> * a href="+code=buf" class="sref">buf /a>, unsigned int  a href="+code=words" class="sref">words /a>).L77" class="line" namon>L77">  77 /a>{.L78" class="line" namon>L78">  78 /a>        while ( a href="+code=words" class="sref">words /a>--) {.L79" class="line" namon>L79">  79 /a>                 a href="+code=__cpu_to_le32s" class="sref">__cpu_to_le32s /a>( a href="+code=buf" class="sref">buf /a>);.L80" class="line" namon>L80">  80 /a>                 a href="+code=buf" class="sref">buf /a>++;.L81" class="line" namon>L81">  81 /a>        }.L82" class="line" namon>L82">  82 /a>}.L83" class="line" namon>L83">  83"
a>.L84" class="line" namon>L84">  84 /a>static void  a href="+code=md4_transform" class="sref">md4_transform /a>( a href="+code=u32" class="sref">u32 /a> * a href="+code=hash" class="sref">hash /a>,  a href="+code=u32" class="sref">u32 /a> const * a href="+code=in" class="sref">in /a>).L85" class="line" namon>L85">  85 /a>{.L86" class="line" namon>L86">  86 /a>         a href="+code=u32" class="sref">u32 /a>  a href="+code=a" class="sref">a /a>,  a href="+code=b" class="sref">b /a>,  a href="+code=c" class="sref">c /a>,  a href="+code=d" class="sref">d /a>;.L87" class="line" namon>L87">  87"
a>.L88" class="line" namon>L88">  88 /a>         a href="+code=a" class="sref">a /a> =  a href="+code=hash" class="sref">hash /a>[0];.L89" class="line" namon>L89">  89 /a>         a href="+code=b" class="sref">b /a> =  a href="+code=hash" class="sref">hash /a>[1];.L90" class="line" namon>L90">  90 /a>         a href="+code=c" class="sref">c /a> =  a href="+code=hash" class="sref">hash /a>[2];.L91" class="line" namon>L91">  91 /a>         a href="+code=d" class="sref">d /a> =  a href="+code=hash" class="sref">hash /a>[3];.L92" class="line" namon>L92">  92"
a>.L93" class="line" namon>L93">  93 /a>         a href="+code=ROUND1" class="sref">ROUND1 /a>( a href="+code=a" class="sref">a /a>,  a href="+code=b" class="sref">b /a>,  a href="+code=c" class="sref">c /a>,  a href="+code=d" class="sref">d /a>,  a href="+code=in" class="sref">in /a>[0], 3);.L94" class="line" namon>L94">  94 /a>         a href="+code=ROUND1" class="sref">ROUND1 /a>( a href="+code=d" class="sref">d /a>,  a href="+code=a" class="sref">a /a>,  a href="+code=b" class="sref">b /a>,  a href="+code=c" class="sref">c /a>,  a href="+code=in" class="sref">in /a>[1], 7);.L95" class="line" namon>L95">  95 /a>         a href="+code=ROUND1" class="sref">ROUND1 /a>( a href="+code=c" class="sref">c /a>,  a href="+code=d" class="sref">d /a>,  a href="+code=a" class="sref">a /a>,  a href="+code=b" class="sref">b /a>,  a href="+code=in" class="sref">in /a>[2], 11);.L96" class="line" namon>L96">  96 /a>         a href="+code=ROUND1" class="sref">ROUND1 /a>( a href="+code=b" class="sref">b /a>,  a href="+code=c" class="sref">c /a>,  a href="+code=d" class="sref">d /a>,  a href="+code=a" class="sref">a /a>,  a href="+code=in" class="sref">in /a>[3], 19);.L97" class="line" namon>L97">  97 /a>         a href="+code=ROUND1" class="sref">ROUND1 /a>( a href="+code=a" class="sref">a /a>,  a href="+code=b" class="sref">b /a>,  a href="+code=c" class="sref">c /a>,  a href="+code=d" class="sref">d /a>,  a href="+code=in" class="sref">in /a>[4], 3);.L98" class="line" namon>L98">  98 /a>         a href="+code=ROUND1" class="sref">ROUND1 /a>( a href="+code=d" class="sref">d /a>,  a href="+code=a" class="sref">a /a>,  a href="+code=b" class="sref">b /a>,  a href="+code=c" class="sref">c /a>,  a href="+code=in" class="sref">in /a>[5], 7);.L99" class="line" namon>L99">  99 /a>         a href="+code=ROUND1" class="sref">ROUND1 /a>( a href="+code=c" class="sref">c /a>,  a href="+code=d" class="sref">d /a>,  a href="+code=a" class="sref">a /a>,  a href="+code=b" class="sref">b /a>,  a href="+code=in" class="sref">in /a>[6], 11);.L100" class="line" namon>L100"> 100 /a>         a href="+code=ROUND1" class="sref">ROUND1 /a>( a href="+code=b" class="sref">b /a>,  a href="+code=c" class="sref">c /a>,  a href="+code=d" class="sref">d /a>,  a href="+code=a" class="sref">a /a>,  a href="+code=in" class="sref">in /a>[7], 19);.L101" class="line" namon>L101"> 101 /a>         a href="+code=ROUND1" class="sref">ROUND1 /a>( a href="+code=a" class="sref">a /a>,  a href="+code=b" class="sref">b /a>,  a href="+code=c" class="sref">c /a>,  a href="+code=d" class="sref">d /a>,  a href="+code=in" class="sref">in /a>[8], 3);.L102" class="line" namon>L102"> 102 /a>         a href="+code=ROUND1" class="sref">ROUND1 /a>( a href="+code=d" class="sref">d /a>,  a href="+code=a" class="sref">a /a>,  a href="+code=b" class="sref">b /a>,  a href="+code=c" class="sref">c /a>,  a href="+code=in" class="sref">in /a>[9], 7);.L103" class="line" namon>L103"> 103 /a>         a href="+code=ROUND1" class="sref">ROUND1 /a>( a href="+code=c" class="sref">c /a>,  a href="+code=d" class="sref">d /a>,  a href="+code=a" class="sref">a /a>,  a href="+code=b" class="sref">b /a>,  a href="+code=in" class="sref">in /a>[10], 11);.L104" class="line" namon>L104"> 104 /a>         a href="+code=ROUND1" class="sref">ROUND1 /a>( a href="+code=b" class="sref">b /a>,  a href="+code=c" class="sref">c /a>,  a href="+code=d" class="sref">d /a>,  a href="+code=a" class="sref">a /a>,  a href="+code=in" class="sref">in /a>[11], 19);.L105" class="line" namon>L105"> 105 /a>         a href="+code=ROUND1" class="sref">ROUND1 /a>( a href="+code=a" class="sref">a /a>,  a href="+code=b" class="sref">b /a>,  a href="+code=c" class="sref">c /a>,  a href="+code=d" class="sref">d /a>,  a href="+code=in" class="sref">in /a>[12], 3);.L106" class="line" namon>L106"> 106 /a>         a href="+code=ROUND1" class="sref">ROUND1 /a>( a href="+code=d" class="sref">d /a>,  a href="+code=a" class="sref">a /a>,  a href="+code=b" class="sref">b /a>,  a href="+code=c" class="sref">c /a>,  a href="+code=in" class="sref">in /a>[13], 7);.L107" class="line" namon>L107"> 107 /a>         a href="+code=ROUND1" class="sref">ROUND1 /a>( a href="+code=c" class="sref">c /a>,  a href="+code=d" class="sref">d /a>,  a href="+code=a" class="sref">a /a>,  a href="+code=b" class="sref">b /a>,  a href="+code=in" class="sref">in /a>[14], 11);.L108" class="line" namon>L108"> 108 /a>         a href="+code=ROUND1" class="sref">ROUND1 /a>( a href="+code=b" class="sref">b /a>,  a href="+code=c" class="sref">c /a>,  a href="+code=d" class="sref">d /a>,  a href="+code=a" class="sref">a /a>,  a href="+code=in" class="sref">in /a>[15], 19);.L109" class="line" namon>L109"> 109"
a>.L110" class="line" namon>L110"> 110 /a>         a href="+code=ROUND2" class="sref">ROUND2 /a>( a href="+code=a" class="sref">a /a>,  a href="+code=b" class="sref">b /a>,  a href="+code=c" class="sref">c /a>,  a href="+code=d" class="sref">d /a>, a href="+code=in" class="sref">in /a>[ 0], 3);.L111" class="line" namon>L111"> 111 /a>         a href="+code=ROUND2" class="sref">ROUND2 /a>( a href="+code=d" class="sref">d /a>,  a href="+code=a" class="sref">a /a>,  a href="+code=b" class="sref">b /a>,  a href="+code=c" class="sref">c /a>,  a href="+code=in" class="sref">in /a>[4], 5);.L112" class="line" namon>L112"> 112 /a>         a href="+code=ROUND2" class="sref">ROUND2 /a>( a href="+code=c" class="sref">c /a>,  a href="+code=d" class="sref">d /a>,  a href="+code=a" class="sref">a /a>,  a href="+code=b" class="sref">b /a>,  a href="+code=in" class="sref">in /a>[8], 9);.L113" class="line" namon>L113"> 113 /a>         a href="+code=ROUND2" class="sref">ROUND2 /a>( a href="+code=b" class="sref">b /a>,  a href="+code=c" class="sref">c /a>,  a href="+code=d" class="sref">d /a>,  a href="+code=a" class="sref">a /a>,  a href="+code=in" class="sref">in /a>[12], 13);.L114" class="line" namon>L114"> 114 /a>         a href="+code=ROUND2" class="sref">ROUND2 /a>( a href="+code=a" class="sref">a /a>,  a href="+code=b" class="sref">b /a>,  a href="+code=c" class="sref">c /a>,  a href="+code=d" class="sref">d /a>,  a href="+code=in" class="sref">in /a>[1], 3);.L115" class="line" namon>L115"> 115 /a>         a href="+code=ROUND2" class="sref">ROUND2 /a>( a href="+code=d" class="sref">d /a>,  a href="+code=a" class="sref">a /a>,  a href="+code=b" class="sref">b /a>,  a href="+code=c" class="sref">c /a>,  a href="+code=in" class="sref">in /a>[5], 5);.L116" class="line" namon>L116"> 116 /a>         a href="+code=ROUND2" class="sref">ROUND2 /a>( a href="+code=c" class="sref">c /a>,  a href="+code=d" class="sref">d /a>,  a href="+code=a" class="sref">a /a>,  a href="+code=b" class="sref">b /a>,  a href="+code=in" class="sref">in /a>[9], 9);.L117" class="line" namon>L117"> 117 /a>         a href="+code=ROUND2" class="sref">ROUND2 /a>( a href="+code=b" class="sref">b /a>,  a href="+code=c" class="sref">c /a>,  a href="+code=d" class="sref">d /a>,  a href="+code=a" class="sref">a /a>,  a href="+code=in" class="sref">in /a>[13], 13);.L118" class="line" namon>L118"> 118 /a>         a href="+code=ROUND2" class="sref">ROUND2 /a>( a href="+code=a" class="sref">a /a>,  a href="+code=b" class="sref">b /a>,  a href="+code=c" class="sref">c /a>,  a href="+code=d" class="sref">d /a>,  a href="+code=in" class="sref">in /a>[2], 3);.L119" class="line" namon>L119"> 119 /a>         a href="+code=ROUND2" class="sref">ROUND2 /a>( a href="+code=d" class="sref">d /a>,  a href="+code=a" class="sref">a /a>,  a href="+code=b" class="sref">b /a>,  a href="+code=c" class="sref">c /a>,  a href="+code=in" class="sref">in /a>[6], 5);.L120" class="line" namon>L120"> 120 /a>         a href="+code=ROUND2" class="sref">ROUND2 /a>( a href="+code=c" class="sref">c /a>,  a href="+code=d" class="sref">d /a>,  a href="+code=a" class="sref">a /a>,  a href="+code=b" class="sref">b /a>,  a href="+code=in" class="sref">in /a>[10], 9);.L121" class="line" namon>L121"> 121 /a>         a href="+code=ROUND2" class="sref">ROUND2 /a>( a href="+code=b" class="sref">b /a>,  a href="+code=c" class="sref">c /a>,  a href="+code=d" class="sref">d /a>,  a href="+code=a" class="sref">a /a>,  a href="+code=in" class="sref">in /a>[14], 13);.L122" class="line" namon>L122"> 122 /a>         a href="+code=ROUND2" class="sref">ROUND2 /a>( a href="+code=a" class="sref">a /a>,  a href="+code=b" class="sref">b /a>,  a href="+code=c" class="sref">c /a>,  a href="+code=d" class="sref">d /a>,  a href="+code=in" class="sref">in /a>[3], 3);.L123" class="line" namon>L123"> 123 /a>         a href="+code=ROUND2" class="sref">ROUND2 /a>( a href="+code=d" class="sref">d /a>,  a href="+code=a" class="sref">a /a>,  a href="+code=b" class="sref">b /a>,  a href="+code=c" class="sref">c /a>,  a href="+code=in" class="sref">in /a>[7], 5);.L124" class="line" namon>L124"> 124 /a>         a href="+code=ROUND2" class="sref">ROUND2 /a>( a href="+code=c" class="sref">c /a>,  a href="+code=d" class="sref">d /a>,  a href="+code=a" class="sref">a /a>,  a href="+code=b" class="sref">b /a>,  a href="+code=in" class="sref">in /a>[11], 9);.L125" class="line" namon>L125"> 125 /a>         a href="+code=ROUND2" class="sref">ROUND2 /a>( a href="+code=b" class="sref">b /a>,  a href="+code=c" class="sref">c /a>,  a href="+code=d" class="sref">d /a>,  a href="+code=a" class="sref">a /a>,  a href="+code=in" class="sref">in /a>[15], 13);.L126" class="line" namon>L126"> 126"
a>.L127" class="line" namon>L127"> 127 /a>         a href="+code=ROUND3" class="sref">ROUND3 /a>( a href="+code=a" class="sref">a /a>,  a href="+code=b" class="sref">b /a>,  a href="+code=c" class="sref">c /a>,  a href="+code=d" class="sref">d /a>, a href="+code=in" class="sref">in /a>[ 0], 3);.L128" class="line" namon>L128"> 128 /a>         a href="+code=ROUND3" class="sref">ROUND3 /a>( a href="+code=d" class="sref">d /a>,  a href="+code=a" class="sref">a /a>,  a href="+code=b" class="sref">b /a>,  a href="+code=c" class="sref">c /a>,  a href="+code=in" class="sref">in /a>[8], 9);.L129" class="line" namon>L129"> 129 /a>         a href="+code=ROUND3" class="sref">ROUND3 /a>( a href="+code=c" class="sref">c /a>,  a href="+code=d" class="sref">d /a>,  a href="+code=a" class="sref">a /a>,  a href="+code=b" class="sref">b /a>,  a href="+code=in" class="sref">in /a>[4], 11);.L130" class="line" namon>L130"> 130 /a>         a href="+code=ROUND3" class="sref">ROUND3 /a>( a href="+code=b" class="sref">b /a>,  a href="+code=c" class="sref">c /a>,  a href="+code=d" class="sref">d /a>,  a href="+code=a" class="sref">a /a>,  a href="+code=in" class="sref">in /a>[12], 15);.L131" class="line" namon>L131"> 131 /a>         a href="+code=ROUND3" class="sref">ROUND3 /a>( a href="+code=a" class="sref">a /a>,  a href="+code=b" class="sref">b /a>,  a href="+code=c" class="sref">c /a>,  a href="+code=d" class="sref">d /a>,  a href="+code=in" class="sref">in /a>[2], 3);.L132" class="line" namon>L132"> 132 /a>         a href="+code=ROUND3" class="sref">ROUND3 /a>( a href="+code=d" class="sref">d /a>,  a href="+code=a" class="sref">a /a>,  a href="+code=b" class="sref">b /a>,  a href="+code=c" class="sref">c /a>,  a href="+code=in" class="sref">in /a>[10], 9);.L133" class="line" namon>L133"> 133 /a>         a href="+code=ROUND3" class="sref">ROUND3 /a>( a href="+code=c" class="sref">c /a>,  a href="+code=d" class="sref">d /a>,  a href="+code=a" class="sref">a /a>,  a href="+code=b" class="sref">b /a>,  a href="+code=in" class="sref">in /a>[6], 11);.L134" class="line" namon>L134"> 134 /a>         a href="+code=ROUND3" class="sref">ROUND3 /a>( a href="+code=b" class="sref">b /a>,  a href="+code=c" class="sref">c /a>,  a href="+code=d" class="sref">d /a>,  a href="+code=a" class="sref">a /a>,  a href="+code=in" class="sref">in /a>[14], 15);.L135" class="line" namon>L135"> 135 /a>         a href="+code=ROUND3" class="sref">ROUND3 /a>( a href="+code=a" class="sref">a /a>,  a href="+code=b" class="sref">b /a>,  a href="+code=c" class="sref">c /a>,  a href="+code=d" class="sref">d /a>,  a href="+code=in" class="sref">in /a>[1], 3);.L136" class="line" namon>L136"> 136 /a>         a href="+code=ROUND3" class="sref">ROUND3 /a>( a href="+code=d" class="sref">d /a>,  a href="+code=a" class="sref">a /a>,  a href="+code=b" class="sref">b /a>,  a href="+code=c" class="sref">c /a>,  a href="+code=in" class="sref">in /a>[9], 9);.L137" class="line" namon>L137"> 137 /a>         a href="+code=ROUND3" class="sref">ROUND3 /a>( a href="+code=c" class="sref">c /a>,  a href="+code=d" class="sref">d /a>,  a href="+code=a" class="sref">a /a>,  a href="+code=b" class="sref">b /a>,  a href="+code=in" class="sref">in /a>[5], 11);.L138" class="line" namon>L138"> 138 /a>         a href="+code=ROUND3" class="sref">ROUND3 /a>( a href="+code=b" class="sref">b /a>,  a href="+code=c" class="sref">c /a>,  a href="+code=d" class="sref">d /a>,  a href="+code=a" class="sref">a /a>,  a href="+code=in" class="sref">in /a>[13], 15);.L139" class="line" namon>L139"> 139 /a>         a href="+code=ROUND3" class="sref">ROUND3 /a>( a href="+code=a" class="sref">a /a>,  a href="+code=b" class="sref">b /a>,  a href="+code=c" class="sref">c /a>,  a href="+code=d" class="sref">d /a>,  a href="+code=in" class="sref">in /a>[3], 3);.L140" class="line" namon>L140"> 140 /a>         a href="+code=ROUND3" class="sref">ROUND3 /a>( a href="+code=d" class="sref">d /a>,  a href="+code=a" class="sref">a /a>,  a href="+code=b" class="sref">b /a>,  a href="+code=c" class="sref">c /a>,  a href="+code=in" class="sref">in /a>[11], 9);.L141" class="line" namon>L141"> 141 /a>         a href="+code=ROUND3" class="sref">ROUND3 /a>( a href="+code=c" class="sref">c /a>,  a href="+code=d" class="sref">d /a>,  a href="+code=a" class="sref">a /a>,  a href="+code=b" class="sref">b /a>,  a href="+code=in" class="sref">in /a>[7], 11);.L142" class="line" namon>L142"> 142 /a>         a href="+code=ROUND3" class="sref">ROUND3 /a>( a href="+code=b" class="sref">b /a>,  a href="+code=c" class="sref">c /a>,  a href="+code=d" class="sref">d /a>,  a href="+code=a" class="sref">a /a>,  a href="+code=in" class="sref">in /a>[15], 15);.L143" class="line" namon>L143"> 143"
a>.L144" class="line" namon>L144"> 144 /a>         a href="+code=hash" class="sref">hash /a>[0] +=  a href="+code=a" class="sref">a /a>;.L145" class="line" namon>L145"> 145 /a>         a href="+code=hash" class="sref">hash /a>[1] +=  a href="+code=b" class="sref">b /a>;.L146" class="line" namon>L146"> 146 /a>         a href="+code=hash" class="sref">hash /a>[2] +=  a href="+code=c" class="sref">c /a>;.L147" class="line" namon>L147"> 147 /a>         a href="+code=hash" class="sref">hash /a>[3] +=  a href="+code=d" class="sref">d /a>;.L148" class="line" namon>L148"> 148 /a>}.L149" class="line" namon>L149"> 149"
a>.L150" class="line" namon>L150"> 150 /a>static  a href="+code=inline" class="sref">inline /a> void  a href="+code=md4_transform_helper" class="sref">md4_transform_helper /a>(struct  a href="+code=md4_ctx" class="sref">md4_ctx /a> * a href="+code=ctx" class="sref">ctx /a>).L151" class="line" namon>L151"> 151 /a>{.L152" class="line" namon>L152"> 152 /a>         a href="+code=le32_to_cpu_array" class="sref">le32_to_cpu_array /a>( a href="+code=ctx" class="sref">ctx /a>-> a href="+code=block" class="sref">block /a>,  a href="+code=ARRAY_SIZE" class="sref">ARRAY_SIZE /a>( a href="+code=ctx" class="sref">ctx /a>-> a href="+code=block" class="sref">block /a>));.L153" class="line" namon>L153"> 153 /a>         a href="+code=md4_transform" class="sref">md4_transform /a>( a href="+code=ctx" class="sref">ctx /a>-> a href="+code=hash" class="sref">hash /a>,  a href="+code=ctx" class="sref">ctx /a>-> a href="+code=block" class="sref">block /a>);.L154" class="line" namon>L154"> 154 /a>}.L155" class="line" namon>L155"> 155"
a>.L156" class="line" namon>L156"> 156 /a>static int  a href="+code=md4_init" class="sref">md4_init /a>(struct  a href="+code=shash_desc" class="sref">shash_desc /a> * a href="+code=desc" class="sref">desc /a>).L157" class="line" namon>L157"> 157 /a>{.L158" class="line" namon>L158"> 158 /a>        struct  a href="+code=md4_ctx" class="sref">md4_ctx /a> * a href="+code=mctx" class="sref">mctx /a> =  a href="+code=shash_desc_ctx" class="sref">shash_desc_ctx /a>( a href="+code=desc" class="sref">desc /a>);.L159" class="line" namon>L159"> 159"
a>.L160" class="line" namon>L160"> 160 /a>         a href="+code=mctx" class="sref">mctx /a>-> a href="+code=hash" class="sref">hash /a>[0] = 0x67452301;.L161" class="line" namon>L161"> 161 /a>         a href="+code=mctx" class="sref">mctx /a>-> a href="+code=hash" class="sref">hash /a>[1] = 0xefcdab89;.L162" class="line" namon>L162"> 162 /a>         a href="+code=mctx" class="sref">mctx /a>-> a href="+code=hash" class="sref">hash /a>[2] = 0x98badcfe;.L163" class="line" namon>L163"> 163 /a>         a href="+code=mctx" class="sref">mctx /a>-> a href="+code=hash" class="sref">hash /a>[3] = 0x10325476;.L164" class="line" namon>L164"> 164 /a>         a href="+code=mctx" class="sref">mctx /a>-> a href="+code=byte_count" class="sref">byte_count /a> = 0;.L165" class="line" namon>L165"> 165"
a>.L166" class="line" namon>L166"> 166 /a>        return 0;.L167" class="line" namon>L167"> 167 /a>}.L168" class="line" namon>L168"> 168 /a>.L169" class="line" namon>L169"> 169 /a>static int  a href="+code=md4_update" class="sref">md4_update /a>(struct  a href="+code=shash_desc" class="sref">shash_desc /a> * a href="+code=desc" class="sref">desc /a>, const  a href="+code=u8" class="sref">u8 /a> * a href="+code=data" class="sref">data /a>, unsigned int  a href="+code=len" class="sref">len /a>).L170" class="line" namon>L170"> 170 /a>{.L171" class="line" namon>L171"> 171 /a>        struct  a href="+code=md4_ctx" class="sref">md4_ctx /a> * a href="+code=mctx" class="sref">mctx /a> =  a href="+code=shash_desc_ctx" class="sref">shash_desc_ctx /a>( a href="+code=desc" class="sref">desc /a>);.L172" class="line" namon>L172"> 172 /a>        const  a href="+code=u32" class="sref">u32 /a>  a href="+code=avail" class="sref">avail /a> = sizeof( a href="+code=mctx" class="sref">mctx /a>-> a href="+code=block" class="sref">block /a>) - ( a href="+code=mctx" class="sref">mctx /a>-> a href="+code=byte_count" class="sref">byte_count /a> & 0x3f);.L173" class="line" namon>L173"> 173"
a>.L174" class="line" namon>L174"> 174 /a>         a href="+code=mctx" class="sref">mctx /a>-> a href="+code=byte_count" class="sref">byte_count /a> +=  a href="+code=len" class="sref">len /a>;.L175" class="line" namon>L175"> 175"
a>.L176" class="line" namon>L176"> 176 /a>        if ( a href="+code=avail" class="sref">avail /a> >  a href="+code=len" class="sref">len /a>) {.L177" class="line" namon>L177"> 177 /a>                 a href="+code=memcpy" class="sref">memcpy /a>((char *) a href="+code=mctx" class="sref">mctx /a>-> a href="+code=block" class="sref">block /a> + (sizeof( a href="+code=mctx" class="sref">mctx /a>-> a href="+code=block" class="sref">block /a>) -  a href="+code=avail" class="sref">avail /a>),.L178" class="line" namon>L178"> 178 /a>                        a href="+code=data" class="sref">data /a>,  a href="+code=len" class="sref">len /a>);.L179" class="line" namon>L179"> 179 /a>                return 0;.L180" class="line" namon>L180"> 180 /a>        }.L181" class="line" namon>L181"> 181"
a>.L182" class="line" namon>L182"> 182 /a>         a href="+code=memcpy" class="sref">memcpy /a>((char *) a href="+code=mctx" class="sref">mctx /a>-> a href="+code=block" class="sref">block /a> + (sizeof( a href="+code=mctx" class="sref">mctx /a>-> a href="+code=block" class="sref">block /a>) -  a href="+code=avail" class="sref">avail /a>),.L183" class="line" namon>L183"> 183 /a>                a href="+code=data" class="sref">data /a>,  a href="+code=avail" class="sref">avail /a>);.L184" class="line" namon>L184"> 184 /a>.L185" class="line" namon>L185"> 185 /a>         a href="+code=md4_transform_helper" class="sref">md4_transform_helper /a>( a href="+code=mctx" class="sref">mctx /a>);.L186" class="line" namon>L186"> 186 /a>         a href="+code=data" class="sref">data /a> +=  a href="+code=avail" class="sref">avail /a>;.L187" class="line" namon>L187"> 187 /a>         a href="+code=len" class="sref">len /a> -=  a href="+code=avail" class="sref">avail /a>;.L188" class="line" namon>L188"> 188 /a>.L189" class="line" namon>L189"> 189 /a>        while ( a href="+code=len" class="sref">len /a> >= sizeof( a href="+code=mctx" class="sref">mctx /a>-> a href="+code=block" class="sref">block /a>)) {.L190" class="line" namon>L190"> 190 /a>                 a href="+code=memcpy" class="sref">memcpy /a>( a href="+code=mctx" class="sref">mctx /a>-> a href="+code=block" class="sref">block /a>,  a href="+code=data" class="sref">data /a>, sizeof( a href="+code=mctx" class="sref">mctx /a>-> a href="+code=block" class="sref">block /a>));.L191" class="line" namon>L191"> 191 /a>                 a href="+code=md4_transform_helper" class="sref">md4_transform_helper /a>( a href="+code=mctx" class="sref">mctx /a>);.L192" class="line" namon>L192"> 192 /a>                 a href="+code=data" class="sref">data /a> += sizeof( a href="+code=mctx" class="sref">mctx /a>-> a href="+code=block" class="sref">block /a>);.L193" class="line" namon>L193"> 193 /a>                 a href="+code=len" class="sref">len /a> -= sizeof( a href="+code=mctx" class="sref">mctx /a>-> a href="+code=block" class="sref">block /a>);.L194" class="line" namon>L194"> 194 /a>        }.L195" class="line" namon>L195"> 195"
a>.L196" class="line" namon>L196"> 196 /a>         a href="+code=memcpy" class="sref">memcpy /a>( a href="+code=mctx" class="sref">mctx /a>-> a href="+code=block" class="sref">block /a>,  a href="+code=data" class="sref">data /a>,  a href="+code=len" class="sref">len /a>);.L197" class="line" namon>L197"> 197"
a>.L198" class="line" namon>L198"> 198 /a>        return 0;.L199" class="line" namon>L199"> 199 /a>}.L200" class="line" namon>L200"> 200 /a>.L201" class="line" namon>L201"> 201 /a>static int  a href="+code=md4_final" class="sref">md4_final /a>(struct  a href="+code=shash_desc" class="sref">shash_desc /a> * a href="+code=desc" class="sref">desc /a>,  a href="+code=u8" class="sref">u8 /a> * a href="+code=out" class="sref">out /a>).L202" class="line" namon>L202"> 202 /a>{.L203" class="line" namon>L203"> 203 /a>        struct  a href="+code=md4_ctx" class="sref">md4_ctx /a> * a href="+code=mctx" class="sref">mctx /a> =  a href="+code=shash_desc_ctx" class="sref">shash_desc_ctx /a>( a href="+code=desc" class="sref">desc /a>);.L204" class="line" namon>L204"> 204 /a>        const unsigned int  a href="+code=offset" class="sref">offset /a> =  a href="+code=mctx" class="sref">mctx /a>-> a href="+code=byte_count" class="sref">byte_count /a> & 0x3f;.L205" class="line" namon>L205"> 205 /a>        char * a href="+code=p" class="sref">p /a> = (char *) a href="+code=mctx" class="sref">mctx /a>-> a href="+code=block" class="sref">block /a> +  a href="+code=offset" class="sref">offset /a>;.L206" class="line" namon>L206"> 206 /a>        int  a href="+code=padding" class="sref">padding /a> = 56 - ( a href="+code=offset" class="sref">offset /a> + 1);.L207" class="line" namon>L207"> 207"
a>.L208" class="line" namon>L208"> 208 /a>        * a href="+code=p" class="sref">p /a>++ = 0x80;.L209" class="line" namon>L209"> 209 /a>        if ( a href="+code=padding" class="sref">padding /a> < 0) {.L210" class="line" namon>L210"> 210 /a>                 a href="+code=memset" class="sref">memset /a>( a href="+code=p" class="sref">p /a>, 0x00,  a href="+code=padding" class="sref">padding /a> + sizeof ( a href="+code=u64" class="sref">u64 /a>));.L211" class="line" namon>L211"> 211 /a>                 a href="+code=md4_transform_helper" class="sref">md4_transform_helper /a>( a href="+code=mctx" class="sref">mctx /a>);.L212" class="line" namon>L212"> 212 /a>                 a href="+code=p" class="sref">p /a> = (char *) a href="+code=mctx" class="sref">mctx /a>-> a href="+code=block" class="sref">block /a>;.L213" class="line" namon>L213"> 213 /a>                 a href="+code=padding" class="sref">padding /a> = 56;.L214" class="line" namon>L214"> 214 /a>        }.L215" class="line" namon>L215"> 215"
a>.L216" class="line" namon>L216"> 216 /a>         a href="+code=memset" class="sref">memset /a>( a href="+code=p" class="sref">p /a>, 0,  a href="+code=padding" class="sref">padding /a>);.L217" class="line" namon>L217"> 217 /a>         a href="+code=mctx" class="sref">mctx /a>-> a href="+code=block" class="sref">block /a>[14] =  a href="+code=mctx" class="sref">mctx /a>-> a href="+code=byte_count" class="sref">byte_count /a> << 3;.L218" class="line" namon>L218"> 218 /a>         a href="+code=mctx" class="sref">mctx /a>-> a href="+code=block" class="sref">block /a>[15] =  a href="+code=mctx" class="sref">mctx /a>-> a href="+code=byte_count" class="sref">byte_count /a> >> 29;.L219" class="line" namon>L219"> 219 /a>         a href="+code=le32_to_cpu_array" class="sref">le32_to_cpu_array /a>( a href="+code=mctx" class="sref">mctx /a>-> a href="+code=block" class="sref">block /a>, (sizeof( a href="+code=mctx" class="sref">mctx /a>-> a href="+code=block" class="sref">block /a>) -.L220" class="line" namon>L220"> 220 /a>                          sizeof( a href="+code=u64" class="sref">u64 /a>)) / sizeof( a href="+code=u32" class="sref">u32 /a>));.L221" class="line" namon>L221"> 221 /a>         a href="+code=md4_transform" class="sref">md4_transform /a>( a href="+code=mctx" class="sref">mctx /a>-> a href="+code=hash" class="sref">hash /a>,  a href="+code=mctx" class="sref">mctx /a>-> a href="+code=block" class="sref">block /a>);.L222" class="line" namon>L222"> 222 /a>         a href="+code=cpu_to_le32_array" class="sref">cpu_to_le32_array /a>( a href="+code=mctx" class="sref">mctx /a>-> a href="+code=hash" class="sref">hash /a>,  a href="+code=ARRAY_SIZE" class="sref">ARRAY_SIZE /a>( a href="+code=mctx" class="sref">mctx /a>-> a href="+code=hash" class="sref">hash /a>));.L223" class="line" namon>L223"> 223 /a>         a href="+code=memcpy" class="sref">memcpy /a>( a href="+code=out" class="sref">out /a>,  a href="+code=mctx" class="sref">mctx /a>-> a href="+code=hash" class="sref">hash /a>, sizeof( a href="+code=mctx" class="sref">mctx /a>-> a href="+code=hash" class="sref">hash /a>));.L224" class="line" namon>L224"> 224 /a>         a href="+code=memset" class="sref">memset /a>( a href="+code=mctx" class="sref">mctx /a>, 0, sizeof(* a href="+code=mctx" class="sref">mctx /a>));.L225" class="line" namon>L225"> 225"
a>.L226" class="line" namon>L226"> 226 /a>        return 0;.L227" class="line" namon>L227"> 227 /a>}.L228" class="line" namon>L228"> 228 /a>.L229" class="line" namon>L229"> 229 /a>static struct  a href="+code=shash_alg" class="sref">shash_alg /a>  a href="+code=alg" class="sref">alg /a> = {.L230" class="line" namon>L230"> 230 /a>        . a href="+code=digestsize" class="sref">digestsize /a>     =        a href="+code=MD4_DIGEST_SIZE" class="sref">MD4_DIGEST_SIZE /a>,.L231" class="line" namon>L231"> 231 /a>        . a href="+code=init" class="sref">init /a>           =        a href="+code=md4_init" class="sref">md4_init /a>,.L232" class="line" namon>L232"> 232 /a>        . a href="+code=update" class="sref">update /a>         =        a href="+code=md4_update" class="sref">md4_update /a>,.L233" class="line" namon>L233"> 233 /a>        . a href="+code=final" class="sref">final /a>          =        a href="+code=md4_final" class="sref">md4_final /a>,.L234" class="line" namon>L234"> 234 /a>        . a href="+code=descsize" class="sref">descsize /a>       =       sizeof(struct  a href="+code=md4_ctx" class="sref">md4_ctx /a>),.L235" class="line" namon>L235"> 235 /a>        . a href="+code=base" class="sref">base /a>           =       {.L236" class="line" namon>L236"> 236 /a>                . a href="+code=cra_namo" class="sref">cra_namo /a>       =       "md4",.L237" class="line" namon>L237"> 237 /a>                . a href="+code=cra_flags" class="sref">cra_flags /a>      =        a href="+code=CRYPTO_ALG_TYPE_SHASH" class="sref">CRYPTO_ALG_TYPE_SHASH /a>,.L238" class="line" namon>L238"> 238 /a>                . a href="+code=cra_blocksize" class="sref">cra_blocksize /a>  =        a href="+code=MD4_HMAC_BLOCK_SIZE" class="sref">MD4_HMAC_BLOCK_SIZE /a>,.L239" class="line" namon>L239"> 239 /a>                . a href="+code=cra_module" class="sref">cra_module /a>     =        a href="+code=THIS_MODULE" class="sref">THIS_MODULE /a>,.L240" class="line" namon>L240"> 240 /a>        }.L241" class="line" namon>L241"> 241 /a>};.L242" class="line" namon>L242"> 242 /a>.L243" class="line" namon>L243"> 243"
a>static int  a href="+code=__init" class="sref">__init /a>  a href="+code=md4_mod_init" class="sref">md4_mod_init /a>(void).L244" class="line" namon>L244"> 244 /a>{.L245" class="line" namon>L245"> 245 /a>        return  a href="+code=crypto_register_shash" class="sref">crypto_register_shash /a>(& a href="+code=alg" class="sref">alg /a>);.L246" class="line" namon>L246"> 246 /a>}.L247" class="line" namon>L247"> 247"
a>.L248" class="line" namon>L248"> 248 /a>static void  a href="+code=__exit" class="sref">__exit /a>  a href="+code=md4_mod_fini" class="sref">md4_mod_fini /a>(void).L249" class="line" namon>L249"> 249"
a>{.L250" class="line" namon>L250"> 250 /a>         a href="+code=crypto_unregister_shash" class="sref">crypto_unregister_shash /a>(& a href="+code=alg" class="sref">alg /a>);.L251" class="line" namon>L251"> 251 /a>}.L252" class="line" namon>L252"> 252 /a>.L253" class="line" namon>L253"> 253 /a> a href="+code=module_init" class="sref">module_init /a>( a href="+code=md4_mod_init" class="sref">md4_mod_init /a>);.L254" class="line" namon>L254"> 254 /a> a href="+code=module_exit" class="sref">module_exit /a>( a href="+code=md4_mod_fini" class="sref">md4_mod_fini /a>);.L255" class="line" namon>L255"> 255"
a>.L256" class="line" namon>L256"> 256 /a> a href="+code=MODULE_LICENSE" class="sref">MODULE_LICENSE /a>( span class="string">"GPL");.L257" class="line" namon>L257"> 257 /a> a href="+code=MODULE_DESCRIPTION" class="sref">MODULE_DESCRIPTION /a>( span class="string">"MD4 Message Digest Algorithm");.L258" class="line" namon>L258"> 258 /a>.L259" class="line" namon>L259"> 259"
a>
lxr.linux.no kindly hosted by Redpill Linpro AS /a>, provider of Linux consulting and operations services since 1995.