<html>
<head>
<title>embedded IPsec - IPsec library</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" href="doxygen.css" type="text/css">
</head>

<body bgcolor="#FFFFFF" text="#000000">
<table width="98%" border="0" align="center">
  <tr>
    <td>
      <h2 align="left"><img src="logo_small.gif" alt="embedded IPsec"> source 
        code documentation </h2>
<hr>

<!-- Generated by Doxygen 1.3.4 -->
<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
<h1>md5.h File Reference</h1><hr><a name="_details"></a><h2>Detailed Description</h2>
Header of MD5 Message-Digest Algorithm. 
<p>
<dl compact><dt><b>Author:</b></dt><dd>Niklaus Schild &lt;<a href="mailto:n.schild@gmx.ch">n.schild@gmx.ch</a>&gt;</dd></dl>
This document is part of <em>embedded IPsec<br>
 Copyright (c) 2003 Niklaus Schild and Christian Scheurer, HTI Biel/Bienne<br>
 All rights reserved.<br>
 This file contains code from the OpenSSL Project<br>
 portions Copyright (c) 1998-2003 OpenSSL (www.openssl.org) </em><hr>

<p>
Definition in file <a class="el" href="md5_8h-source.html">md5.h</a>.
<p>
<code>#include "<a class="el" href="types_8h-source.html">ipsec/types.h</a>"</code><br>

<p>
<a href="md5_8h-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0>
<tr><td></td></tr>
<tr><td colspan=2><br><h2>Data Structures</h2></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="structMD5state__st.html">MD5state_st</a></td></tr>

<tr><td colspan=2><br><h2>Defines</h2></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="md5_8h.html#a0">MD5_LONG</a>&nbsp;&nbsp;&nbsp;<a class="el" href="types_8h.html#a4">__u32</a></td></tr>

<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="md5_8h.html#a1">MD5_CBLOCK</a>&nbsp;&nbsp;&nbsp;64</td></tr>

<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="md5_8h.html#a2">MD5_LBLOCK</a>&nbsp;&nbsp;&nbsp;(MD5_CBLOCK/4)</td></tr>

<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="md5_8h.html#a3">MD5_DIGEST_LENGTH</a>&nbsp;&nbsp;&nbsp;16</td></tr>

<tr><td colspan=2><br><h2>Typedefs</h2></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="structMD5state__st.html">MD5state_st</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="md5_8h.html#a4">MD5_CTX</a></td></tr>

<tr><td colspan=2><br><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="md5_8h.html#a5">MD5_Init</a> (<a class="el" href="structMD5state__st.html">MD5_CTX</a> *c)</td></tr>

<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="md5_8h.html#a6">MD5_Update</a> (<a class="el" href="structMD5state__st.html">MD5_CTX</a> *c, const  void *data, unsigned long len)</td></tr>

<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="md5_8h.html#a7">MD5_Final</a> (unsigned char *md, <a class="el" href="structMD5state__st.html">MD5_CTX</a> *c)</td></tr>

<tr><td class="memItemLeft" nowrap align=right valign=top>unsigned char *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="md5_8h.html#a8">MD5</a> (const  unsigned char *d, unsigned long n, unsigned char *md)</td></tr>

<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="md5_8h.html#a9">MD5_Transform</a> (<a class="el" href="structMD5state__st.html">MD5_CTX</a> *c, const  unsigned char *b)</td></tr>

<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="md5_8h.html#a10">hmac_md5</a> (unsigned char *, int, unsigned char *, int, unsigned char *)</td></tr>

</table>
<hr><h2>Define Documentation</h2>
<a class="anchor" name="a1" doxytag="md5.h::MD5_CBLOCK" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> #define MD5_CBLOCK&nbsp;&nbsp;&nbsp;64
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>

<p>
Definition at line <a class="el" href="md5_8h-source.html#l00058">58</a> of file <a class="el" href="md5_8h-source.html">md5.h</a>.    </td>
  </tr>
</table>
<a class="anchor" name="a3" doxytag="md5.h::MD5_DIGEST_LENGTH" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> #define MD5_DIGEST_LENGTH&nbsp;&nbsp;&nbsp;16
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>

<p>
Definition at line <a class="el" href="md5_8h-source.html#l00060">60</a> of file <a class="el" href="md5_8h-source.html">md5.h</a>.    </td>
  </tr>
</table>
<a class="anchor" name="a2" doxytag="md5.h::MD5_LBLOCK" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> #define MD5_LBLOCK&nbsp;&nbsp;&nbsp;(MD5_CBLOCK/4)
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>

<p>
Definition at line <a class="el" href="md5_8h-source.html#l00059">59</a> of file <a class="el" href="md5_8h-source.html">md5.h</a>.    </td>
  </tr>
</table>
<a class="anchor" name="a0" doxytag="md5.h::MD5_LONG" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> #define MD5_LONG&nbsp;&nbsp;&nbsp;<a class="el" href="types_8h.html#a4">__u32</a>
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! MD5_LONG has to be at least 32 bits wide. If it's wider, then ! ! MD5_LONG_LOG2 has to be defined along. ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
<p>
Definition at line <a class="el" href="md5_8h-source.html#l00055">55</a> of file <a class="el" href="md5_8h-source.html">md5.h</a>.    </td>
  </tr>
</table>
<hr><h2>Typedef Documentation</h2>
<a class="anchor" name="a4" doxytag="md5.h::MD5_CTX" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> typedef struct <a class="el" href="structMD5state__st.html">MD5state_st</a>  <a class="el" href="structMD5state__st.html">MD5_CTX</a>
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
    </td>
  </tr>
</table>
<hr><h2>Function Documentation</h2>
<a class="anchor" name="a10" doxytag="md5.h::hmac_md5" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void hmac_md5 </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">unsigned char *&nbsp;</td>
          <td class="mdname" nowrap> <em>text</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>int&nbsp;</td>
          <td class="mdname" nowrap> <em>text_len</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>unsigned char *&nbsp;</td>
          <td class="mdname" nowrap> <em>key</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>int&nbsp;</td>
          <td class="mdname" nowrap> <em>key_len</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>unsigned char *&nbsp;</td>
          <td class="mdname" nowrap> <em>digest</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
RFC 2104 hmac_md5 function calculates a digest from a given data buffer and a given key.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign=top><em>text</em>&nbsp;</td><td>pointer to data stream </td></tr>
    <tr><td valign=top><em>text_len</em>&nbsp;</td><td>length of data stream </td></tr>
    <tr><td valign=top><em>key</em>&nbsp;</td><td>pointer to authentication key </td></tr>
    <tr><td valign=top><em>key_len</em>&nbsp;</td><td>length of authentication key </td></tr>
    <tr><td valign=top><em>digest</em>&nbsp;</td><td>caller digest to be filled in 128-bit </td></tr>
  </table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>void </dd></dl>

<p>
Definition at line <a class="el" href="md5_8c-source.html#l00559">559</a> of file <a class="el" href="md5_8c-source.html">md5.c</a>.    </td>
  </tr>
</table>
<a class="anchor" name="a8" doxytag="md5.h::MD5" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> unsigned char* MD5 </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">const unsigned char *&nbsp;</td>
          <td class="mdname" nowrap> <em>d</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>unsigned long&nbsp;</td>
          <td class="mdname" nowrap> <em>n</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>unsigned char *&nbsp;</td>
          <td class="mdname" nowrap> <em>md</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>

<p>
Definition at line <a class="el" href="md5_8c-source.html#l00060">60</a> of file <a class="el" href="md5_8c-source.html">md5.c</a>.    </td>
  </tr>
</table>
<a class="anchor" name="a7" doxytag="md5.h::MD5_Final" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void MD5_Final </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">unsigned char *&nbsp;</td>
          <td class="mdname" nowrap> <em>md</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap><a class="el" href="structMD5state__st.html">MD5_CTX</a> *&nbsp;</td>
          <td class="mdname" nowrap> <em>c</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>

<p>
Definition at line <a class="el" href="md5_8c-source.html#l00261">261</a> of file <a class="el" href="md5_8c-source.html">md5.c</a>.    </td>
  </tr>
</table>
<a class="anchor" name="a5" doxytag="md5.h::MD5_Init" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void MD5_Init </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="structMD5state__st.html">MD5_CTX</a> *&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>c</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>

<p>
Definition at line <a class="el" href="md5_8c-source.html#l00079">79</a> of file <a class="el" href="md5_8c-source.html">md5.c</a>.    </td>
  </tr>
</table>
<a class="anchor" name="a9" doxytag="md5.h::MD5_Transform" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void MD5_Transform </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="structMD5state__st.html">MD5_CTX</a> *&nbsp;</td>
          <td class="mdname" nowrap> <em>c</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>const unsigned char *&nbsp;</td>
          <td class="mdname" nowrap> <em>b</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>

<p>
Definition at line <a class="el" href="md5_8c-source.html#l00251">251</a> of file <a class="el" href="md5_8c-source.html">md5.c</a>.    </td>
  </tr>
</table>
<a class="anchor" name="a6" doxytag="md5.h::MD5_Update" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void MD5_Update </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="structMD5state__st.html">MD5_CTX</a> *&nbsp;</td>
          <td class="mdname" nowrap> <em>c</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>const void *&nbsp;</td>
          <td class="mdname" nowrap> <em>data</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>unsigned long&nbsp;</td>
          <td class="mdname" nowrap> <em>len</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>

<p>
Definition at line <a class="el" href="md5_8c-source.html#l00155">155</a> of file <a class="el" href="md5_8c-source.html">md5.c</a>.    </td>
  </tr>
</table>
	</td>
  </tr>
</table>
<hr>
<div align="center">Copyright 2003 by Christian Scheurer and Niklaus Schild</div>
</html>