Sophie

Sophie

distrib > Mandriva > 10.2 > i586 > media > contrib > by-pkgid > 7457b841ac8136d3a1a9d3d960c5252e > files > 1308

libcryptopp-doc-5.2.1-2mdk.i586.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>Crypto++: md4.cpp Source File</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.3.7 -->
<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class&nbsp;Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Class&nbsp;List</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="namespacemembers.html">Namespace&nbsp;Members</a> | <a class="qindex" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
<h1>md4.cpp</h1><pre class="fragment"><div>00001 <span class="comment">// md4.cpp - modified by Wei Dai from Andrew M. Kuchling's md4.c</span>
00002 <span class="comment">// The original code and all modifications are in the public domain.</span>
00003 
00004 <span class="comment">// This is the original introductory comment:</span>
00005 
00006 <span class="comment">/*</span>
00007 <span class="comment"> *  md4.c : MD4 hash algorithm.</span>
00008 <span class="comment"> *</span>
00009 <span class="comment"> * Part of the Python Cryptography Toolkit, version 1.1</span>
00010 <span class="comment"> *</span>
00011 <span class="comment"> * Distribute and use freely; there are no restrictions on further </span>
00012 <span class="comment"> * dissemination and usage except those imposed by the laws of your </span>
00013 <span class="comment"> * country of residence.</span>
00014 <span class="comment"> *</span>
00015 <span class="comment"> */</span>
00016 
00017 <span class="preprocessor">#include "pch.h"</span>
00018 <span class="preprocessor">#include "md4.h"</span>
00019 <span class="preprocessor">#include "misc.h"</span>
00020 
00021 NAMESPACE_BEGIN(CryptoPP)
00022 
00023 void <a class="code" href="class_m_d4.html">MD4</a>::InitState(HashWordType *state)
00024 {
00025         state[0] = 0x67452301L;
00026         state[1] = 0xefcdab89L;
00027         state[2] = 0x98badcfeL;
00028         state[3] = 0x10325476L;
00029 }
00030 
00031 <span class="keywordtype">void</span> MD4::Transform (word32 *digest, <span class="keyword">const</span> word32 *in)
00032 {
00033 <span class="comment">// #define F(x, y, z) (((x) &amp; (y)) | ((~x) &amp; (z)))</span>
00034 <span class="preprocessor">#define F(x, y, z) ((z) ^ ((x) &amp; ((y) ^ (z))))</span>
00035 <span class="preprocessor"></span><span class="preprocessor">#define G(x, y, z) (((x) &amp; (y)) | ((x) &amp; (z)) | ((y) &amp; (z)))</span>
00036 <span class="preprocessor"></span><span class="preprocessor">#define H(x, y, z) ((x) ^ (y) ^ (z))</span>
00037 <span class="preprocessor"></span>
00038     word32 A, B, C, D;
00039 
00040         A=digest[0];
00041         B=digest[1];
00042         C=digest[2];
00043         D=digest[3];
00044 
00045 <span class="preprocessor">#define function(a,b,c,d,k,s) a=rotlFixed(a+F(b,c,d)+in[k],s);   </span>
00046 <span class="preprocessor"></span>          function(A,B,C,D, 0, 3);
00047           function(D,A,B,C, 1, 7);
00048           function(C,D,A,B, 2,11);
00049           function(B,C,D,A, 3,19);
00050           function(A,B,C,D, 4, 3);
00051           function(D,A,B,C, 5, 7);
00052           function(C,D,A,B, 6,11);
00053           function(B,C,D,A, 7,19);
00054           function(A,B,C,D, 8, 3);
00055           function(D,A,B,C, 9, 7);
00056           function(C,D,A,B,10,11);
00057           function(B,C,D,A,11,19);
00058           function(A,B,C,D,12, 3);
00059           function(D,A,B,C,13, 7);
00060           function(C,D,A,B,14,11);
00061           function(B,C,D,A,15,19);
00062 
00063 <span class="preprocessor">#undef function   </span>
00064 <span class="preprocessor"></span><span class="preprocessor">#define function(a,b,c,d,k,s) a=rotlFixed(a+G(b,c,d)+in[k]+0x5a827999,s);        </span>
00065 <span class="preprocessor"></span>          function(A,B,C,D, 0, 3);
00066           function(D,A,B,C, 4, 5);
00067           function(C,D,A,B, 8, 9);
00068           function(B,C,D,A,12,13);
00069           function(A,B,C,D, 1, 3);
00070           function(D,A,B,C, 5, 5);
00071           function(C,D,A,B, 9, 9);
00072           function(B,C,D,A,13,13);
00073           function(A,B,C,D, 2, 3);
00074           function(D,A,B,C, 6, 5);
00075           function(C,D,A,B,10, 9);
00076           function(B,C,D,A,14,13);
00077           function(A,B,C,D, 3, 3);
00078           function(D,A,B,C, 7, 5);
00079           function(C,D,A,B,11, 9);
00080           function(B,C,D,A,15,13);
00081 
00082 <span class="preprocessor">#undef function  </span>
00083 <span class="preprocessor"></span><span class="preprocessor">#define function(a,b,c,d,k,s) a=rotlFixed(a+H(b,c,d)+in[k]+0x6ed9eba1,s);        </span>
00084 <span class="preprocessor"></span>          function(A,B,C,D, 0, 3);
00085           function(D,A,B,C, 8, 9);
00086           function(C,D,A,B, 4,11);
00087           function(B,C,D,A,12,15);
00088           function(A,B,C,D, 2, 3);
00089           function(D,A,B,C,10, 9);
00090           function(C,D,A,B, 6,11);
00091           function(B,C,D,A,14,15);
00092           function(A,B,C,D, 1, 3);
00093           function(D,A,B,C, 9, 9);
00094           function(C,D,A,B, 5,11);
00095           function(B,C,D,A,13,15);
00096           function(A,B,C,D, 3, 3);
00097           function(D,A,B,C,11, 9);
00098           function(C,D,A,B, 7,11);
00099           function(B,C,D,A,15,15);
00100 
00101         digest[0]+=A;
00102         digest[1]+=B;
00103         digest[2]+=C;
00104         digest[3]+=D;
00105 }
00106 
00107 NAMESPACE_END
</div></pre><hr size="1"><address style="align: right;"><small>Generated on Sun Nov 7 08:23:58 2004 for Crypto++ by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0 ></a> 1.3.7 </small></address>
</body>
</html>