<html> <head> <title>Eet: Cipher, Identity and Protection Mechanisms</title> <meta http-equiv="content-type" content="text/html;charset=UTF-8"> <meta name="author" content="Andres Blanc" > <link rel="icon" href="img/favicon.png" type="image/x-icon"> <link rel="shortcut icon" href="img/favicon.png" type="image/x-icon"> <link rel="icon" href="img/favicon.png" type="image/ico"> <link rel="shortcut icon" href="img/favicon.png" type="image/ico"> <link rel="stylesheet" type="text/css" media="screen" href="e.css"> <link rel="stylesheet" type="text/css" media="screen" href="edoxy.css"> </head> <body> <div id="container"> <div id="header"> <div class="layout"> <h1><span>Enlightenment</span></h1> <h2><span>Beauty at your fingertips</span></h2> <div class="menu-container"> <div class="menu"> <ul> <li class="current"><a href="http://web.enlightenment.org/p.php?p=docs">Docs</a></li> <li><a href="http://trac.enlightenment.org/e">Tracker</a></li> <li><a href="http://www.enlightenment.org/p.php?p=contact">Contact</a></li> <li><a href="http://www.enlightenment.org/p.php?p=contribute">Contribute</a></li> <li><a href="http://www.enlightenment.org/p.php?p=support">Support</a></li> <li><a href="http://www.enlightenment.org/p.php?p=download">Download</a></li> <li><a href="http://www.enlightenment.org/p.php?p=about">About</a></li> <li><a href="http://www.enlightenment.org/p.php?p=news">News</a></li> <li><a href="http://www.enlightenment.org/">Home</a></li> </ul> </div> </div> <div class="doxytitle"> Eet Documentation <small>at 2 Jul 2010</small> </div> <div class="menu-container"> <div class="submenu"> <ul class="current"> <li><a href="Examples.html">Examples</a></li> <li><a href="files.html">Files</a></li> <li><a href="modules.html">Modules</a></li> <li><a href="globals.html">Globals</a></li> <li><a href="pages.html">Related Pages</a></li> <li class="current"><a href="index.html">Main Page</a></li> </ul> </div> </div> <div class="clear"></div> </div> </div> <div id="content"> <div class="layout"> <!-- Generated by Doxygen 1.6.2-20100208 --> <div class="contents"> <h1>Cipher, Identity and Protection Mechanisms</h1> <p>Eet allows one to protect entries of an <a class="el" href="group__Eet__File__Group.html#ga8d9779184a9870c1a225f1f40c76e8a7" title="Opaque handle that defines an Eet file (or memory).">Eet_File</a> individually. <a href="#_details">More...</a></p> <table border="0" cellpadding="0" cellspacing="0"> <tr><td colspan="2"><h2>Typedefs</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaa958627af70e4ee4c54adba8805da30d"></a><!-- doxytag: member="Eet_Cipher_Group::Eet_Key" ref="gaa958627af70e4ee4c54adba8805da30d" args="" --> typedef struct _Eet_Key </td><td class="memItemRight" valign="bottom"><a class="el" href="group__Eet__Cipher__Group.html#gaa958627af70e4ee4c54adba8805da30d">Eet_Key</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Opaque handle that defines an identity (also known as key) in Eet's cipher system. <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">typedef int(* </td><td class="memItemRight" valign="bottom"><a class="el" href="group__Eet__Cipher__Group.html#ga874d97b532dbdc0a14bf12aa9a5202d5">Eet_Key_Password_Callback</a> )(char *buffer, int size, int rwflag, void *data)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Callback used to request if needed the password of a private key. <a href="#ga874d97b532dbdc0a14bf12aa9a5202d5"></a><br/></td></tr> <tr><td colspan="2"><h2>Functions</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">EAPI <a class="el" href="group__Eet__Cipher__Group.html#gaa958627af70e4ee4c54adba8805da30d">Eet_Key</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__Eet__Cipher__Group.html#gae8be5ad35c585cdf5034309bc97f1af8">eet_identity_open</a> (const char *certificate_file, const char *private_key_file, <a class="el" href="group__Eet__Cipher__Group.html#ga874d97b532dbdc0a14bf12aa9a5202d5">Eet_Key_Password_Callback</a> cb)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Create an Eet_Key needed for signing an eet file. <a href="#gae8be5ad35c585cdf5034309bc97f1af8"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">EAPI void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__Eet__Cipher__Group.html#gaa8b2e329d0ecdb55b564e1aa70ba557f">eet_identity_close</a> (<a class="el" href="group__Eet__Cipher__Group.html#gaa958627af70e4ee4c54adba8805da30d">Eet_Key</a> *key)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Close and release all ressource used by an Eet_Key. <a href="#gaa8b2e329d0ecdb55b564e1aa70ba557f"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">EAPI <a class="el" href="group__Eet__Group.html#gab002b16c58e2a62fc7981581647a0092">Eet_Error</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__Eet__Cipher__Group.html#ga687984e5f508017c01f6d22a203fce16">eet_identity_set</a> (<a class="el" href="group__Eet__File__Group.html#ga8d9779184a9870c1a225f1f40c76e8a7">Eet_File</a> *ef, <a class="el" href="group__Eet__Cipher__Group.html#gaa958627af70e4ee4c54adba8805da30d">Eet_Key</a> *key)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Set a key to sign a file. <a href="#ga687984e5f508017c01f6d22a203fce16"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">EAPI void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__Eet__Cipher__Group.html#ga846b1e0f0f4a1a9c7ab9a4fc55728534">eet_identity_print</a> (<a class="el" href="group__Eet__Cipher__Group.html#gaa958627af70e4ee4c54adba8805da30d">Eet_Key</a> *key, FILE *out)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Display both private and public key of an Eet_Key. <a href="#ga846b1e0f0f4a1a9c7ab9a4fc55728534"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">EAPI const void * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__Eet__Cipher__Group.html#ga6f92a1276ed7e87d5a7ba58b7943df7a">eet_identity_x509</a> (<a class="el" href="group__Eet__File__Group.html#ga8d9779184a9870c1a225f1f40c76e8a7">Eet_File</a> *ef, int *der_length)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Get the x509 der certificate associated with an Eet_File. <a href="#ga6f92a1276ed7e87d5a7ba58b7943df7a"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">EAPI const void * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__Eet__Cipher__Group.html#gacabba4892e4492464fe29309508a8c99">eet_identity_signature</a> (<a class="el" href="group__Eet__File__Group.html#ga8d9779184a9870c1a225f1f40c76e8a7">Eet_File</a> *ef, int *signature_length)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Get the raw signature associated with an Eet_File. <a href="#gacabba4892e4492464fe29309508a8c99"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">EAPI const void * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__Eet__Cipher__Group.html#gacb54b5441fc049d52b4e3f212087c8a0">eet_identity_sha1</a> (<a class="el" href="group__Eet__File__Group.html#ga8d9779184a9870c1a225f1f40c76e8a7">Eet_File</a> *ef, int *sha1_length)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Get the SHA1 associated with a file. <a href="#gacb54b5441fc049d52b4e3f212087c8a0"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">EAPI void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__Eet__Cipher__Group.html#ga131e4a43a0ae98dc31a9a642ada33357">eet_identity_certificate_print</a> (const unsigned char *certificate, int der_length, FILE *out)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Display the x509 der certificate to out. <a href="#ga131e4a43a0ae98dc31a9a642ada33357"></a><br/></td></tr> </table> <hr/><a name="_details"></a><h2>Detailed Description</h2> <p>Eet allows one to protect entries of an <a class="el" href="group__Eet__File__Group.html#ga8d9779184a9870c1a225f1f40c76e8a7" title="Opaque handle that defines an Eet file (or memory).">Eet_File</a> individually. </p> <p>This may be used to ensure data was not tampered or that third party does not read your data.</p> <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__Eet__File__Cipher__Group.html">Eet File Ciphered Main Functions</a> </dd> <dd> <a class="el" href="group__Eet__File__Image__Cipher__Group.html">Image Store and Load using a Cipher</a> </dd></dl> <hr/><h2>Typedef Documentation</h2> <a class="anchor" id="ga874d97b532dbdc0a14bf12aa9a5202d5"></a><!-- doxytag: member="Eet.h::Eet_Key_Password_Callback" ref="ga874d97b532dbdc0a14bf12aa9a5202d5" args=")(char *buffer, int size, int rwflag, void *data)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef int(* <a class="el" href="group__Eet__Cipher__Group.html#ga874d97b532dbdc0a14bf12aa9a5202d5">Eet_Key_Password_Callback</a>)(char *buffer, int size, int rwflag, void *data)</td> </tr> </table> </div> <div class="memdoc"> <p>Callback used to request if needed the password of a private key. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>buffer</em> </td><td>the buffer where to store the password. </td></tr> <tr><td valign="top"></td><td valign="top"><em>size</em> </td><td>the maximum password size (size of buffer, including '\0'). </td></tr> <tr><td valign="top"></td><td valign="top"><em>rwflag</em> </td><td>if the buffer is also readable or just writable. </td></tr> <tr><td valign="top"></td><td valign="top"><em>data</em> </td><td>currently unused, may contain some context in future. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>1 on success and password was set to <code>buffer</code>, 0 on failure.</dd></dl> <dl class="since"><dt><b>Since:</b></dt><dd>1.2.0 </dd></dl> </div> </div> <hr/><h2>Function Documentation</h2> <a class="anchor" id="ga131e4a43a0ae98dc31a9a642ada33357"></a><!-- doxytag: member="Eet.h::eet_identity_certificate_print" ref="ga131e4a43a0ae98dc31a9a642ada33357" args="(const unsigned char *certificate, int der_length, FILE *out)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">EAPI void eet_identity_certificate_print </td> <td>(</td> <td class="paramtype">const unsigned char * </td> <td class="paramname"> <em>certificate</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>der_length</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">FILE * </td> <td class="paramname"> <em>out</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Display the x509 der certificate to out. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>certificate</em> </td><td>the x509 certificate to print </td></tr> <tr><td valign="top"></td><td valign="top"><em>der_length</em> </td><td>The length the certificate. </td></tr> <tr><td valign="top"></td><td valign="top"><em>out</em> </td><td>where to print.</td></tr> </table> </dd> </dl> <dl class="since"><dt><b>Since:</b></dt><dd>1.2.0 </dd></dl> </div> </div> <a class="anchor" id="gaa8b2e329d0ecdb55b564e1aa70ba557f"></a><!-- doxytag: member="Eet.h::eet_identity_close" ref="gaa8b2e329d0ecdb55b564e1aa70ba557f" args="(Eet_Key *key)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">EAPI void eet_identity_close </td> <td>(</td> <td class="paramtype"><a class="el" href="group__Eet__Cipher__Group.html#gaa958627af70e4ee4c54adba8805da30d">Eet_Key</a> * </td> <td class="paramname"> <em>key</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Close and release all ressource used by an Eet_Key. </p> <p>An reference counter prevent it from being freed until all file using it are also closed.</p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td>the key handle to close and free resources.</td></tr> </table> </dd> </dl> <dl class="since"><dt><b>Since:</b></dt><dd>1.2.0 </dd></dl> </div> </div> <a class="anchor" id="gae8be5ad35c585cdf5034309bc97f1af8"></a><!-- doxytag: member="Eet.h::eet_identity_open" ref="gae8be5ad35c585cdf5034309bc97f1af8" args="(const char *certificate_file, const char *private_key_file, Eet_Key_Password_Callback cb)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">EAPI <a class="el" href="group__Eet__Cipher__Group.html#gaa958627af70e4ee4c54adba8805da30d">Eet_Key</a>* eet_identity_open </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"> <em>certificate_file</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>private_key_file</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group__Eet__Cipher__Group.html#ga874d97b532dbdc0a14bf12aa9a5202d5">Eet_Key_Password_Callback</a> </td> <td class="paramname"> <em>cb</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Create an Eet_Key needed for signing an eet file. </p> <p>The certificate should provide the public that match the private key. No verification is done to ensure that.</p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>certificate_file</em> </td><td>The file where to find the certificate. </td></tr> <tr><td valign="top"></td><td valign="top"><em>private_key_file</em> </td><td>The file that contains the private key. </td></tr> <tr><td valign="top"></td><td valign="top"><em>cb</em> </td><td>Function to callback if password is required to unlock private key. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>A key handle to use, or <code>NULL</code> on failure.</dd></dl> <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__Eet__Cipher__Group.html#gaa8b2e329d0ecdb55b564e1aa70ba557f" title="Close and release all ressource used by an Eet_Key.">eet_identity_close()</a></dd></dl> <dl class="since"><dt><b>Since:</b></dt><dd>1.2.0 </dd></dl> </div> </div> <a class="anchor" id="ga846b1e0f0f4a1a9c7ab9a4fc55728534"></a><!-- doxytag: member="Eet.h::eet_identity_print" ref="ga846b1e0f0f4a1a9c7ab9a4fc55728534" args="(Eet_Key *key, FILE *out)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">EAPI void eet_identity_print </td> <td>(</td> <td class="paramtype"><a class="el" href="group__Eet__Cipher__Group.html#gaa958627af70e4ee4c54adba8805da30d">Eet_Key</a> * </td> <td class="paramname"> <em>key</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">FILE * </td> <td class="paramname"> <em>out</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Display both private and public key of an Eet_Key. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td>the handle to print. </td></tr> <tr><td valign="top"></td><td valign="top"><em>out</em> </td><td>where to print.</td></tr> </table> </dd> </dl> <dl class="since"><dt><b>Since:</b></dt><dd>1.2.0 </dd></dl> </div> </div> <a class="anchor" id="ga687984e5f508017c01f6d22a203fce16"></a><!-- doxytag: member="Eet.h::eet_identity_set" ref="ga687984e5f508017c01f6d22a203fce16" args="(Eet_File *ef, Eet_Key *key)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">EAPI <a class="el" href="group__Eet__Group.html#gab002b16c58e2a62fc7981581647a0092">Eet_Error</a> eet_identity_set </td> <td>(</td> <td class="paramtype"><a class="el" href="group__Eet__File__Group.html#ga8d9779184a9870c1a225f1f40c76e8a7">Eet_File</a> * </td> <td class="paramname"> <em>ef</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group__Eet__Cipher__Group.html#gaa958627af70e4ee4c54adba8805da30d">Eet_Key</a> * </td> <td class="paramname"> <em>key</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Set a key to sign a file. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>ef</em> </td><td>the file to set the identity. </td></tr> <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td>the key handle to set as identity. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd><a class="el" href="group__Eet__Group.html#ggaa9142d865094701672375485d4a6284da624f64fe9803c1a4229a60214d675fa4" title="Given object or handle is NULL or invalid.">EET_ERROR_BAD_OBJECT</a> if <code>ef</code> is invalid or <a class="el" href="group__Eet__Group.html#ggaa9142d865094701672375485d4a6284da2e3af24c66d0decf7c97fe4e5a7f75d4" title="No error, it's all fine!">EET_ERROR_NONE</a> on success.</dd></dl> <dl class="since"><dt><b>Since:</b></dt><dd>1.2.0 </dd></dl> <p>References <a class="el" href="Eet_8h_source.html#l00095">EET_ERROR_BAD_OBJECT</a>, and <a class="el" href="Eet_8h_source.html#l00094">EET_ERROR_NONE</a>.</p> </div> </div> <a class="anchor" id="gacb54b5441fc049d52b4e3f212087c8a0"></a><!-- doxytag: member="Eet.h::eet_identity_sha1" ref="gacb54b5441fc049d52b4e3f212087c8a0" args="(Eet_File *ef, int *sha1_length)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">EAPI const void* eet_identity_sha1 </td> <td>(</td> <td class="paramtype"><a class="el" href="group__Eet__File__Group.html#ga8d9779184a9870c1a225f1f40c76e8a7">Eet_File</a> * </td> <td class="paramname"> <em>ef</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int * </td> <td class="paramname"> <em>sha1_length</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Get the SHA1 associated with a file. </p> <p>Could be the one used to sign the data or if the data where not signed, it will be the SHA1 of the file.</p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>ef</em> </td><td>The file handle to query. </td></tr> <tr><td valign="top"></td><td valign="top"><em>sha1_length</em> </td><td>The length of returned data, may be <code>NULL</code>. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>the associated SHA1 or <code>NULL</code> on error.</dd></dl> <dl class="since"><dt><b>Since:</b></dt><dd>1.2.0 </dd></dl> </div> </div> <a class="anchor" id="gacabba4892e4492464fe29309508a8c99"></a><!-- doxytag: member="Eet.h::eet_identity_signature" ref="gacabba4892e4492464fe29309508a8c99" args="(Eet_File *ef, int *signature_length)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">EAPI const void* eet_identity_signature </td> <td>(</td> <td class="paramtype"><a class="el" href="group__Eet__File__Group.html#ga8d9779184a9870c1a225f1f40c76e8a7">Eet_File</a> * </td> <td class="paramname"> <em>ef</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int * </td> <td class="paramname"> <em>signature_length</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Get the raw signature associated with an Eet_File. </p> <p>Will return NULL if the file is not signed.</p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>ef</em> </td><td>The file handle to query. </td></tr> <tr><td valign="top"></td><td valign="top"><em>signature_length</em> </td><td>The length of returned data, may be <code>NULL</code>. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>the raw signature or <code>NULL</code> on error. </dd></dl> </div> </div> <a class="anchor" id="ga6f92a1276ed7e87d5a7ba58b7943df7a"></a><!-- doxytag: member="Eet.h::eet_identity_x509" ref="ga6f92a1276ed7e87d5a7ba58b7943df7a" args="(Eet_File *ef, int *der_length)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">EAPI const void* eet_identity_x509 </td> <td>(</td> <td class="paramtype"><a class="el" href="group__Eet__File__Group.html#ga8d9779184a9870c1a225f1f40c76e8a7">Eet_File</a> * </td> <td class="paramname"> <em>ef</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int * </td> <td class="paramname"> <em>der_length</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Get the x509 der certificate associated with an Eet_File. </p> <p>Will return NULL if the file is not signed.</p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>ef</em> </td><td>The file handle to query. </td></tr> <tr><td valign="top"></td><td valign="top"><em>der_length</em> </td><td>The length of returned data, may be <code>NULL</code>. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>the x509 certificate or <code>NULL</code> on error.</dd></dl> <dl class="since"><dt><b>Since:</b></dt><dd>1.2.0 </dd></dl> </div> </div> </div> <div id="push"></div> </div> <!-- #content --> </div> <!-- .layout --> </div> <!-- #container --> <div id="footer"> <table><tr> <td class="poweredby"><img src="doxygen.png"></td> <td class="copyright">Copyright ©2010 Enlightenment</td> <td class="generated">Docs generated Fri Jul 2 11:41:28 2010</td> </tr></table> </div> </body> </html>