Sophie

Sophie

distrib > Mandriva > 2008.1 > x86_64 > by-pkgid > 98d6b53e11e983e268c3e19f14e091a0 > files > 572

kdepim-devel-doc-3.5.9-9mdv2008.1.x86_64.rpm

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en_US" xml:lang="en_US">

<head>
  <title>certmanager/lib: Signature Actions (certmanager/lib)</title>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

  <meta http-equiv="Content-Style-Type" content="text/css" />

  <meta http-equiv="pics-label" content='(pics-1.1 "http://www.icra.org/ratingsv02.html" comment "ICRAonline DE v2.0" l gen true for "http://www.kde.org"  r (nz 1 vz 1 lz 1 oz 1 cb 1) "http://www.rsac.org/ratingsv01.html" l gen true for "http://www.kde.org"  r (n 0 s 0 v 0 l 0))' />

  <meta name="trademark" content="KDE e.V." />
  <meta name="description" content="K Desktop Environment Homepage, KDE.org" />
  <meta name="MSSmartTagsPreventParsing" content="true" />
  <meta name="robots" content="all" />

  <link rel="shortcut icon" href="../../../favicon.ico" />

<link rel="stylesheet" media="screen" type="text/css" title="APIDOX" href="doxygen.css" />



<style type="text/css">
<!--
hr { display: none; }
#content h2 { margin-left: 0px; }
table.mdTable { background-color: #f8f8f8; border: .2em solid #d7d7d7; }
td.mdRow { padding: 8px 20px; }
td.md { font-weight: bold; }
td.mdname1 { font-weight: bold; color: #602020; }
td.mdname { font-weight: bold; color: #602020;  }

-->
</style>

</head>

<body>

<div id="nav_header_top" align="right">
  <a href="#content" class="doNotDisplay" accesskey="2">Skip to main content ::</a>

  <a href="../../.."><img id="nav_header_logo" alt="Home" align="left" src="../../../kde_gear_64.png" border="0" /></a>
  <span class="doNotDisplay">::</span>
  <img id="nav_header_logo_right" alt="" align="right" src="../../../pimlogo.png" border="0" />

  <div id="nav_header_title" align="left">KDE PIM API Reference</div>


</div>

<div id="nav_header_bottom" align="right">
  <span class="doNotDisplay">:: <a href="#navigation" accesskey="5">Skip to Link Menu</a><br/></span>
  <div id="nav_header_bottom_left" style="text-align: left;">
/ <a href="../../../">API Reference</a>
 / <a href="../../html/index.html">certmanager</a> / <a href=".">lib</a>
  </div>
</div>


<table id="main" border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
      <td valign="top" class="menuheader" height="0"></td>

  <td id="contentcolumn" valign="top" rowspan="2" >
    <div id="content" style="padding-top: 0px;"><div style="width:100%; margin: 0px; padding: 0px;">
    <h2><a name="content"></a>certmanager/lib</h2>


<!-- Generated by Doxygen 1.5.5 -->
<div class="contents">
<h1>Signature Actions<br>
<small>
[<a class="el" href="group__groupSignCryptAct.html">Signing and Encrypting Actions</a>]</small>
</h1><hr><a name="_details"></a><h2>Detailed Description</h2>
This section describes methods that are used for working with signatures. 
<p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Enumerations</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom">{ <br>
&nbsp;&nbsp;<b>SigStat_VALID</b> =  0x0001, 
<b>SigStat_GREEN</b> =  0x0002, 
<b>SigStat_RED</b> =  0x0004, 
<b>SigStat_KEY_REVOKED</b> =  0x0010, 
<br>
&nbsp;&nbsp;<b>SigStat_KEY_EXPIRED</b> =  0x0020, 
<b>SigStat_SIG_EXPIRED</b> =  0x0040, 
<b>SigStat_KEY_MISSING</b> =  0x0080, 
<b>SigStat_CRL_MISSING</b> =  0x0100, 
<br>
&nbsp;&nbsp;<b>SigStat_CRL_TOO_OLD</b> =  0x0200, 
<b>SigStat_BAD_POLICY</b> =  0x0400, 
<b>SigStat_SYS_ERROR</b> =  0x0800, 
<b>SigStat_NUMERICAL_CODE</b> =  0x8000
<br>
 }</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom">{ <br>
&nbsp;&nbsp;<b>SigStatus_UNKNOWN</b> =  0x0000, 
<b>SigStatus_VALID</b> =  SigStat_VALID, 
<b>SigStatus_GREEN</b> =  SigStat_GREEN, 
<b>SigStatus_RED</b> =  SigStat_RED, 
<br>
&nbsp;&nbsp;<b>SigStatus_KEY_REVOKED</b> =  SigStat_KEY_REVOKED, 
<b>SigStatus_KEY_EXPIRED</b> =  SigStat_KEY_EXPIRED, 
<b>SigStatus_SIG_EXPIRED</b> =  SigStat_SIG_EXPIRED, 
<b>SigStatus_KEY_MISSING</b> =  SigStat_KEY_MISSING, 
<br>
&nbsp;&nbsp;<b>SigStatus_CRL_MISSING</b> =  SigStat_CRL_MISSING, 
<b>SigStatus_CRL_TOO_OLD</b> =  SigStat_CRL_TOO_OLD, 
<b>SigStatus_BAD_POLICY</b> =  SigStat_BAD_POLICY, 
<b>SigStatus_SYS_ERROR</b> =  SigStat_SYS_ERROR, 
<br>
&nbsp;&nbsp;<b>SigStatus_NUMERICAL_CODE</b> =  0x8000
<br>
 }</td></tr>

<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__groupSignAct.html#g169833df078cfb362a597cd435cc399d">CryptPlug::checkMessageSignature</a> (char **cleartext, const char *signaturetext, bool signatureIsBinary, int signatureLen, struct SignatureMetaData *sigmeta, char **attrOrder, const char *unknownAttrsHandling)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__groupSignAct.html#gb57b4e2ebb5d4eed99d46fa69d76d7b9">CryptPlugWrapper::checkMessageSignature</a> (char **cleartext, const char *signaturetext, bool signatureIsBinary, int signatureLen, CryptPlug::SignatureMetaData *sigmeta)</td></tr>

</table>
<hr><h2>Enumeration Type Documentation</h2>
<a class="anchor" name="gbc6126af1d45847bc59afa0aa3216b04"></a><!-- doxytag: member="cryptplug.h::@3" ref="gbc6126af1d45847bc59afa0aa3216b04" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">anonymous enum          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Flags used to compose the SigStatusFlags value. 
<p>
This status flags are used to compose the SigStatusFlags value returned in <code>SignatureMetaDataExtendedInfo</code> after trying to verify a signed message part's signature status.<p>
The normal flags may <b>not</b> be used together with the special SigStat_NUMERICAL_CODE flag. When finding the special SigStat_NUMERICAL_CODE flag in a SigStatusFlags value you can obtain the respective error code number by substracting the SigStatusFlags value by SigStat_NUMERICAL_CODE: this is used to transport special status information NOT matching any of the normal predefined status codes.<p>
<dl class="note" compact><dt><b>Note:</b></dt><dd>to PlugIn developers: Implementations of the CryptPlug API should try to express their signature states by bit-wise OR'ing the normal SigStatusFlags values. Using the SigStat_NUMERICAL_CODE flag should only be used as for exceptional situations where no other flag(s) could be used. By using the normal status flags your PlugIn's users will be told an understandable description of the status - when using (SigStat_NUMERICAL_CODE + internalCode) they will only be shown the respective code number and have to look into your PlugIn's manual to learn about it's meaning... </dd></dl>

<p>Definition at line <a class="el" href="cryptplug_8h-source.html#l00280">280</a> of file <a class="el" href="cryptplug_8h-source.html">cryptplug.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="gd035b4b2196fd1eb918af512ac5bff24"></a><!-- doxytag: member="CryptPlugWrapper::@4" ref="gd035b4b2196fd1eb918af512ac5bff24" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">anonymous enum<code> [inherited]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Flags used to compose the SigStatusFlags value. 
<p>
This status flags are used to compose the SigStatusFlags value returned in <code>SignatureMetaDataExtendedInfo</code> after trying to verify a signed message part's signature status.<p>
The normal flags may <b>not</b> be used together with the special SigStatus_NUMERICAL_CODE flag. When finding the special SigStatus_NUMERICAL_CODE flag in a SigStatusFlags value you can obtain the respective error code number by substracting the SigStatusFlags value by SigStatus_NUMERICAL_CODE: this is used to transport special status information NOT matching any of the normal predefined status codes.<p>
<dl class="note" compact><dt><b>Note:</b></dt><dd>to PlugIn developers: Implementations of the CryptPlug API should try to express their signature states by bit-wise OR'ing the normal SigStatusFlags values. Using the SigStatus_NUMERICAL_CODE flag should only be used as for exceptional situations where no other flag(s) could be used. By using the normal status flags your PlugIn's users will be told an understandable description of the status - when using (SigStatus_NUMERICAL_CODE + internalCode) they will only be shown the respective code number and have to look into your PlugIn's manual to learn about it's meaning... </dd></dl>

<p>Definition at line <a class="el" href="cryptplugwrapper_8h-source.html#l00501">501</a> of file <a class="el" href="cryptplugwrapper_8h-source.html">cryptplugwrapper.h</a>.</p>

</div>
</div><p>
<hr><h2>Function Documentation</h2>
<a class="anchor" name="gb57b4e2ebb5d4eed99d46fa69d76d7b9"></a><!-- doxytag: member="CryptPlugWrapper::checkMessageSignature" ref="gb57b4e2ebb5d4eed99d46fa69d76d7b9" args="(char **cleartext, const char *signaturetext, bool signatureIsBinary, int signatureLen, CryptPlug::SignatureMetaData *sigmeta)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool CryptPlugWrapper::checkMessageSignature           </td>
          <td>(</td>
          <td class="paramtype">char **&nbsp;</td>
          <td class="paramname"> <em>cleartext</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>signaturetext</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&nbsp;</td>
          <td class="paramname"> <em>signatureIsBinary</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>signatureLen</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">CryptPlug::SignatureMetaData *&nbsp;</td>
          <td class="paramname"> <em>sigmeta</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Checks whether the signature of a message is valid. 
<p>
<code>cleartext</code> must never be 0 but be a valid pointer.<p>
If <code>*cleartext</code> &gt; 0 then **cleartext specifies the message text that was signed and <code>signaturetext</code> is the signature itself.<p>
If <code>*cleartext</code> == 0 is an empty string then <code>signaturetext</code> is supposed to contain an opaque signed message part. After checking the data and verifying the signature the cleartext of the message will be returned in <code>cleartext</code>. The user must free the respective memory occupied by *cleartext.<p>
Depending on the configuration, MUAs might not need to use this. If <code>sigmeta</code> is non-null, the <code>SignatureMetaData</code> object pointed to will contain meta information about the signature after the function call. 
<p>Definition at line <a class="el" href="cryptplugwrapper_8cpp-source.html#l00566">566</a> of file <a class="el" href="cryptplugwrapper_8cpp-source.html">cryptplugwrapper.cpp</a>.</p>

</div>
</div><p>
<a class="anchor" name="g169833df078cfb362a597cd435cc399d"></a><!-- doxytag: member="CryptPlug::checkMessageSignature" ref="g169833df078cfb362a597cd435cc399d" args="(char **cleartext, const char *signaturetext, bool signatureIsBinary, int signatureLen, struct SignatureMetaData *sigmeta, char **attrOrder, const char *unknownAttrsHandling)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool CryptPlug::checkMessageSignature           </td>
          <td>(</td>
          <td class="paramtype">char **&nbsp;</td>
          <td class="paramname"> <em>cleartext</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>signaturetext</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&nbsp;</td>
          <td class="paramname"> <em>signatureIsBinary</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>signatureLen</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct SignatureMetaData *&nbsp;</td>
          <td class="paramname"> <em>sigmeta</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char **&nbsp;</td>
          <td class="paramname"> <em>attrOrder</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>unknownAttrsHandling</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Checks whether the signature of a message is valid. 
<p>
<code>cleartext</code> must never be 0 but be a valid pointer.<p>
If <code>*cleartext</code> &gt; 0 then **cleartext specifies the message text that was signed and <code>signaturetext</code> is the signature itself.<p>
If <code>*cleartext</code> == 0 is an empty string then <code>signaturetext</code> is supposed to contain an opaque signed message part. After checking the data and verifying the signature the cleartext of the message will be returned in <code>cleartext</code>. The user must free the respective memory ocupied by *cleartext.<p>
Depending on the configuration, MUAs might not need to use this. If <code>sigmeta</code> is non-null, the <code>SignatureMetaData</code> object pointed to will contain meta information about the signature after the function call. 
<p>Definition at line <a class="el" href="cryptplug_8cpp-source.html#l00962">962</a> of file <a class="el" href="cryptplug_8cpp-source.html">cryptplug.cpp</a>.</p>

</div>
</div><p>
</div>
    </div></div>


      </td>
  </tr>
  <tr>
    <td valign="top" id="leftmenu" width="25%">
      <a name="navigation"></a>
      <div class="menu_box"><h2>certmanager/lib</h2>
<div class="nav_list">
<ul><li><a href="index.html">Main Page</a></li><li><a href="modules.html">Modules</a></li><li><a href="hierarchy.html">Class Hierarchy</a></li><li><a href="classes.html">Alphabetical List</a></li><li><a href="annotated.html">Class List</a></li><li><a href="files.html">File List</a></li><li><a href="functions.html">Class Members</a></li></ul>
<!--
<h2>Class Picker</h2>
<div style="text-align: center;">
<form name="guideform">
<select name="guidelinks" style="width:100%;" onChange="window.location=document.guideform.guidelinks.options[document.guideform.guidelinks.selectedIndex].value">
<option value="annotated.html">-- Choose --</option>
  <option value="classCryptPlugWrapper.html">cryptplugwrapper</option>,  <option value="classKleo_1_1ChiasmusJob.html">kleo::chiasmusjob</option>,  <option value="classKleo_1_1ChiasmusLibrary.html">kleo::chiasmuslibrary</option>,  <option value="classKleo_1_1CryptoConfig.html">kleo::cryptoconfig</option>,  <option value="classKleo_1_1CryptoConfigComponent.html">kleo::cryptoconfigcomponent</option>,  <option value="classKleo_1_1CryptoConfigDialog.html">kleo::cryptoconfigdialog</option>,  <option value="classKleo_1_1CryptoConfigEntry.html">kleo::cryptoconfigentry</option>,  <option value="classKleo_1_1CryptoConfigGroup.html">kleo::cryptoconfiggroup</option>,  <option value="classKleo_1_1CryptoConfigModule.html">kleo::cryptoconfigmodule</option>,  <option value="classKleo_1_1DecryptJob.html">kleo::decryptjob</option>,  <option value="classKleo_1_1DecryptVerifyJob.html">kleo::decryptverifyjob</option>,  <option value="classKleo_1_1DeleteJob.html">kleo::deletejob</option>,  <option value="classKleo_1_1DN.html">kleo::dn</option>,  <option value="classKleo_1_1DNAttributeMapper.html">kleo::dnattributemapper</option>,  <option value="classKleo_1_1DownloadJob.html">kleo::downloadjob</option>,  <option value="classKleo_1_1EncryptJob.html">kleo::encryptjob</option>,  <option value="classKleo_1_1ExportJob.html">kleo::exportjob</option>,  <option value="classKleo_1_1GnuPGProcessBase.html">kleo::gnupgprocessbase</option>,  <option value="classKleo_1_1HierarchicalKeyListJob.html">kleo::hierarchicalkeylistjob</option>,  <option value="classKleo_1_1ImportJob.html">kleo::importjob</option>,  <option value="classKleo_1_1Job.html">kleo::job</option>,  <option value="classKleo_1_1KeyFilter.html">kleo::keyfilter</option>,  <option value="classKleo_1_1KeyGenerationJob.html">kleo::keygenerationjob</option>,  <option value="classKleo_1_1KeyListJob.html">kleo::keylistjob</option>,  <option value="classKleo_1_1KeyRequester.html">kleo::keyrequester</option>,  <option value="classKleo_1_1MultiDeleteJob.html">kleo::multideletejob</option>,  <option value="classKleo_1_1ObtainKeysJob.html">kleo::obtainkeysjob</option>,  <option value="classKleo_1_1ProgressBar.html">kleo::progressbar</option>,  <option value="classKleo_1_1ProgressDialog.html">kleo::progressdialog</option>,  <option value="classKleo_1_1QGpgMEJob.html">kleo::qgpgmejob</option>,  <option value="classKleo_1_1RefreshKeysJob.html">kleo::refreshkeysjob</option>,  <option value="classKleo_1_1SignEncryptJob.html">kleo::signencryptjob</option>,  <option value="classKleo_1_1SignJob.html">kleo::signjob</option>,  <option value="classKleo_1_1SpecialJob.html">kleo::specialjob</option>,  <option value="classKleo_1_1VerifyDetachedJob.html">kleo::verifydetachedjob</option>,  <option value="classKleo_1_1VerifyOpaqueJob.html">kleo::verifyopaquejob</option>,  <option value="classQGpgMECryptoConfig.html">qgpgmecryptoconfig</option>,  <option value="classQGpgMECryptoConfigComponent.html">qgpgmecryptoconfigcomponent</option>,  <option value="classStructuringInfoWrapper.html">structuringinfowrapper</option>,
</select>
</form>
</div>
-->
</div></div>
<div class="menu_box"><h2>API Dox</h2>
<div class="nav_list">
<ul>
<li><a href="../../../akregator/html/index.html">akregator</a></li><li>&nbsp;&nbsp;<a href="../../../akregator/src/html/index.html">src</a></li><li>&nbsp;&nbsp;&nbsp;&nbsp;<a href="../../../akregator/src/librss/html/index.html">librss</a></li><li><a href="../../../certmanager/html/index.html">certmanager</a></li><li>&nbsp;&nbsp;<a href="../../../certmanager/lib/html/index.html">lib</a></li><li><a href="../../../kaddressbook/html/index.html">kaddressbook</a></li><li><a href="../../../kalarm/html/index.html">kalarm</a></li><li>&nbsp;&nbsp;<a href="../../../kalarm/lib/html/index.html">lib</a></li><li><a href="../../../kandy/html/index.html">kandy</a></li><li><a href="../../../karm/html/index.html">karm</a></li><li><a href="../../../kdgantt/html/index.html">kdgantt</a></li><li><a href="../../../kgantt/html/index.html">kgantt</a></li><li><a href="../../../kioslaves/html/index.html">kioslaves</a></li><li>&nbsp;&nbsp;<a href="../../../kioslaves/imap4/html/index.html">imap4</a></li><li>&nbsp;&nbsp;<a href="../../../kioslaves/mbox/html/index.html">mbox</a></li><li><a href="../../../kitchensync/html/index.html">kitchensync</a></li><li><a href="../../../kmail/html/index.html">kmail</a></li><li><a href="../../../knotes/html/index.html">knotes</a></li><li><a href="../../../konsolekalendar/html/index.html">konsolekalendar</a></li><li><a href="../../../kontact/html/index.html">kontact</a></li><li><a href="../../../korganizer/html/index.html">korganizer</a></li><li><a href="../../../kpilot/html/index.html">kpilot</a></li><li>&nbsp;&nbsp;<a href="../../../kpilot/kpilot/html/index.html">kpilot</a></li><li>&nbsp;&nbsp;<a href="../../../kpilot/lib/html/index.html">lib</a></li><li><a href="../../../libemailfunctions/html/index.html">libemailfunctions</a></li><li><a href="../../../libkcal/html/index.html">libkcal</a></li><li><a href="../../../libkdepim/html/index.html">libkdepim</a></li><li><a href="../../../libkholidays/html/index.html">libkholidays</a></li><li><a href="../../../libkmime/html/index.html">libkmime</a></li><li><a href="../../../libkpgp/html/index.html">libkpgp</a></li><li><a href="../../../libkpimidentities/html/index.html">libkpimidentities</a></li>
</ul></div></div>


        </td>
</tr>
</table>

<span class="doNotDisplay">
  <a href="http://www.kde.org/" accesskey="8">KDE Home</a> |
  <a href="http://accessibility.kde.org/" accesskey="9">KDE Accessibility Home</a> |
  <a href="http://www.kde.org/media/accesskeys.php" accesskey="0">Description of Access Keys</a>
</span>


<div style="height: 8px"></div>

<div id="footer">
  <div id="footer_left">
    Maintained by <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;groo&#116;&#64;kde&#46;or&#x67;">Adriaan de Groot</a>
and
<a href="&#109;a&#105;&#108;&#116;&#111;&#58;w&#105;nter&#64;kde&#46;or&#x67">Allen Winter</a>.
<br/>
    KDE and K Desktop Environment are trademarks of <a href="http://www.kde.org/areas/kde-ev/" title="Homepage of the KDE non-profit Organization">KDE e.V.</a> |
    <a href="http://www.kde.org/contact/impressum.php">Legal</a>
  </div>
  <div id="footer_right"><img src="/media/images/footer_right.png" style="margin: 0px" alt="" /></div>
</div>

<!--
WARNING: DO NOT SEND MAIL TO THE FOLLOWING EMAIL ADDRESS! YOU WILL
BE BLOCKED INSTANTLY AND PERMANENTLY!
<a href="mailto:aaaatrap-425acc3b5374943f@kde.org">Block me</a>
WARNING END
-->

</body>
</html>