<divclass="line"><aname="l00002"></a><spanclass="lineno"> 2</span> <spanclass="comment"> This file is part of Pretty Curved Privacy (pcp1).</span></div>
<divclass="line"><aname="l00006"></a><spanclass="lineno"> 6</span> <spanclass="comment"> This program is free software: you can redistribute it and/or modify</span></div>
<divclass="line"><aname="l00007"></a><spanclass="lineno"> 7</span> <spanclass="comment"> it under the terms of the GNU General Public License as published by</span></div>
<divclass="line"><aname="l00008"></a><spanclass="lineno"> 8</span> <spanclass="comment"> the Free Software Foundation, either version 3 of the License, or</span></div>
<divclass="line"><aname="l00009"></a><spanclass="lineno"> 9</span> <spanclass="comment"> (at your option) any later version.</span></div>
<divclass="line"><aname="l00011"></a><spanclass="lineno"> 11</span> <spanclass="comment"> This program is distributed in the hope that it will be useful,</span></div>
<divclass="line"><aname="l00012"></a><spanclass="lineno"> 12</span> <spanclass="comment"> but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
<divclass="line"><aname="l00013"></a><spanclass="lineno"> 13</span> <spanclass="comment"> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div>
<divclass="line"><aname="l00014"></a><spanclass="lineno"> 14</span> <spanclass="comment"> GNU General Public License for more details.</span></div>
<divclass="line"><aname="l00016"></a><spanclass="lineno"> 16</span> <spanclass="comment"> You should have received a copy of the GNU General Public License</span></div>
<divclass="line"><aname="l00017"></a><spanclass="lineno"> 17</span> <spanclass="comment"> along with this program. If not, see <http://www.gnu.org/licenses/>.</span></div>
<divclass="line"><aname="l00019"></a><spanclass="lineno"> 19</span> <spanclass="comment"> You can contact me by mail: <tom AT vondein DOT org>.</span></div>
<divclass="line"><aname="l00103"></a><spanclass="lineno"><aclass="code"href="struct__pcp__key__t.html#a6259d3e70f1ae793398e2e83eba9ae6d"> 103</a></span> <spanclass="keywordtype">char</span><aclass="code"href="struct__pcp__key__t.html#a6259d3e70f1ae793398e2e83eba9ae6d"title="mail address of the owner, string">mail</a>[255]; </div>
<divclass="line"><aname="l00108"></a><spanclass="lineno"><aclass="code"href="struct__pcp__key__t.html#a06aa6c7284118608fd6573a54372e263"> 108</a></span>  uint32_t <aclass="code"href="struct__pcp__key__t.html#a06aa6c7284118608fd6573a54372e263"title="serial number of the key, randomly generated">serial</a>; </div>
<divclass="line"><aname="l00128"></a><spanclass="lineno"><aclass="code"href="struct__pcp__pubkey__t.html#a5d4e99518b3c0edcccd2917274e7cc29"> 128</a></span> <spanclass="keywordtype">char</span><aclass="code"href="struct__pcp__pubkey__t.html#a5d4e99518b3c0edcccd2917274e7cc29"title="mail address of the owner, string">mail</a>[255]; </div>
<divclass="line"><aname="l00133"></a><spanclass="lineno"><aclass="code"href="struct__pcp__pubkey__t.html#afd1941bc57da1a65f8038b47e3ccd21d"> 133</a></span>  uint32_t <aclass="code"href="struct__pcp__pubkey__t.html#afd1941bc57da1a65f8038b47e3ccd21d"title="serial number of the key, randomly generated">serial</a>; </div>
<divclass="line"><aname="l00134"></a><spanclass="lineno"><aclass="code"href="struct__pcp__pubkey__t.html#af93af4b3e259d6fa9e05009e564be8f7"> 134</a></span>  uint8_t <aclass="code"href="struct__pcp__pubkey__t.html#af93af4b3e259d6fa9e05009e564be8f7"title="1 if import signature verified, 0 if not">valid</a>; </div>
<divclass="line"><aname="l00140"></a><spanclass="lineno"><aclass="code"href="group__KEYS.html#ga859c793ca80717fdfc8ebef3e7224746"> 140</a></span> <spanclass="keyword">typedef</span><spanclass="keyword">struct </span><aclass="code"href="struct__pcp__pubkey__t.html"title="PCP public key structure.">_pcp_pubkey_t</a><aclass="code"href="struct__pcp__pubkey__t.html"title="PCP public key structure.">pcp_pubkey_t</a>;</div>
<divclass="line"><aname="l00167"></a><spanclass="lineno"><aclass="code"href="struct__pcp__rec__t.html#a1e3bc60866c85b917b284ed6590e4145"> 167</a></span> <spanclass="keywordtype">size_t</span><aclass="code"href="struct__pcp__rec__t.html#a1e3bc60866c85b917b284ed6590e4145"title="the size of the encrypted recipient list">ciphersize</a>; </div>
<divclass="line"><aname="l00168"></a><spanclass="lineno"><aclass="code"href="struct__pcp__rec__t.html#a5ee9ab68d084ed116bb81bd773122ada"> 168</a></span>  byte *<aclass="code"href="struct__pcp__rec__t.html#a5ee9ab68d084ed116bb81bd773122ada"title="contains the whole encrypted recipient list">cipher</a>; </div>
<divclass="line"><aname="l00169"></a><spanclass="lineno"><aclass="code"href="struct__pcp__rec__t.html#a0167577bf19d9845c4f16c83878f74c8"> 169</a></span> <aclass="code"href="struct__pcp__key__t.html"title="PCP private key structure.">pcp_key_t</a> *<aclass="code"href="struct__pcp__rec__t.html#a0167577bf19d9845c4f16c83878f74c8"title="the secret key of the recipient for signing">secret</a>; </div>
<divclass="line"><aname="l00170"></a><spanclass="lineno"><aclass="code"href="struct__pcp__rec__t.html#ac8918a7a90e23d54ca5d1873c6fbcd02"> 170</a></span> <aclass="code"href="struct__pcp__pubkey__t.html"title="PCP public key structure.">pcp_pubkey_t</a> *<aclass="code"href="struct__pcp__rec__t.html#ac8918a7a90e23d54ca5d1873c6fbcd02"title="if verification were ok, contains the public key of the signer">pub</a>; </div>
<divclass="line"><aname="l00227"></a><spanclass="lineno"> 227</span> <spanclass="keywordtype">char</span> *<aclass="code"href="group__KEYS.html#gabdc09d45ad7a6f9f039f9240635a743f"title="Generate an ASCII art image of the public key.">pcppubkey_get_art</a>(<aclass="code"href="struct__pcp__pubkey__t.html"title="PCP public key structure.">pcp_pubkey_t</a> *k);</div>
<divclass="line"><aname="l00238"></a><spanclass="lineno"> 238</span> <spanclass="keywordtype">char</span> *<aclass="code"href="group__KEYS.html#ga13aae5cf5986e308f1af674bedf0e6fd"title="Generate an ASCII art image of the public key part of a secret key.">pcpkey_get_art</a>(<aclass="code"href="struct__pcp__key__t.html"title="PCP private key structure.">pcp_key_t</a> *k);</div>
<divclass="line"><aname="l00300"></a><spanclass="lineno"> 300</span> <aclass="code"href="struct__pcp__pubkey__t.html"title="PCP public key structure.">pcp_pubkey_t</a> *<aclass="code"href="group__KEYS.html#ga22c965c007208e860deaa4c145046283"title="Generate a public key structure from a given secret key structure.">pcpkey_pub_from_secret</a>(<aclass="code"href="struct__pcp__key__t.html"title="PCP private key structure.">pcp_key_t</a> *key);</div>
<divclass="line"><aname="l00319"></a><spanclass="lineno"> 319</span> <spanclass="keywordtype">char</span> *<aclass="code"href="group__KEYS.html#gaac64db4cd21af0cf79512ea0ea43261f"title="Calculate a key-id from public key fields.">pcp_getkeyid</a>(<aclass="code"href="struct__pcp__key__t.html"title="PCP private key structure.">pcp_key_t</a> *k);</div>
<divclass="line"><aname="l00332"></a><spanclass="lineno"> 332</span> <spanclass="keywordtype">char</span> *<aclass="code"href="group__KEYS.html#gab16e85cdb769465c8ce8808b581c7a3d"title="Calculate a key-id from public key fields.">pcp_getpubkeyid</a>(<aclass="code"href="struct__pcp__pubkey__t.html"title="PCP public key structure.">pcp_pubkey_t</a> *k);</div>
<divclass="line"><aname="l00347"></a><spanclass="lineno"> 347</span> <spanclass="keywordtype">unsigned</span><spanclass="keywordtype">char</span> *<aclass="code"href="group__KEYS.html#ga78309dfa0b19b697ca64d8af2e7d796d"title="Calculate a checksum of a public key.">pcppubkey_getchecksum</a>(<aclass="code"href="struct__pcp__pubkey__t.html"title="PCP public key structure.">pcp_pubkey_t</a> *k);</div>
<divclass="line"><aname="l00357"></a><spanclass="lineno"> 357</span> <spanclass="keywordtype">unsigned</span><spanclass="keywordtype">char</span> *<aclass="code"href="group__KEYS.html#gaa2678fef0a024456ee82d1bfa60c5fb2"title="Calculate a checksum of a public key part of the given secret key.">pcpkey_getchecksum</a>(<aclass="code"href="struct__pcp__key__t.html"title="PCP private key structure.">pcp_key_t</a> *k);</div>
<divclass="line"><aname="l00372"></a><spanclass="lineno"> 372</span> <aclass="code"href="struct__pcp__key__t.html"title="PCP private key structure.">pcp_key_t</a> *<aclass="code"href="group__KEYS.html#ga2cea694131a6a86a9ba76c2514ef1bff"title="Checks if a secret key structure is registered in the secret key hash.">pcpkey_exists</a>(<spanclass="keywordtype">char</span> *<spanclass="keywordtype">id</span>);</div>
<divclass="line"><aname="l00386"></a><spanclass="lineno"> 386</span> <aclass="code"href="struct__pcp__pubkey__t.html"title="PCP public key structure.">pcp_pubkey_t</a> *<aclass="code"href="group__KEYS.html#gacad3aeb15a79c5d8d848452d33db08f8"title="Checks if a public key structure is registered in the public key hash.">pcppubkey_exists</a>(<spanclass="keywordtype">char</span> *<spanclass="keywordtype">id</span>);</div>
<divclass="line"><aname="l00390"></a><spanclass="lineno"> 390</span> <aclass="code"href="struct__pcp__pubkey__t.html"title="PCP public key structure.">pcp_pubkey_t</a> * pubkey2be(<aclass="code"href="struct__pcp__pubkey__t.html"title="PCP public key structure.">pcp_pubkey_t</a> *k);</div>
<divclass="line"><aname="l00391"></a><spanclass="lineno"> 391</span> <aclass="code"href="struct__pcp__pubkey__t.html"title="PCP public key structure.">pcp_pubkey_t</a> *pubkey2native(<aclass="code"href="struct__pcp__pubkey__t.html"title="PCP public key structure.">pcp_pubkey_t</a> *k);</div>
<divclass="line"><aname="l00403"></a><spanclass="lineno"> 403</span> <spanclass="comment">/* use scrypt() to create a key from a passphrase and a nonce</span></div>
<divclass="line"><aname="l00404"></a><spanclass="lineno"> 404</span> <spanclass="comment"> FIXME: use pure scrypt() instead.</span></div>
<divclass="line"><aname="l00408"></a><spanclass="lineno"> 408</span> <spanclass="comment">/* FIXME: abandon and use Buffer instead */</span></div>
<divclass="line"><aname="l00420"></a><spanclass="lineno"> 420</span> <spanclass="keywordtype">int</span><aclass="code"href="group__KEYS.html#gafd7aed4591ab1ef769e5d061fe77a3de"title="Make a sanity check of the given public key structure.">pcp_sanitycheck_pub</a>(<aclass="code"href="struct__pcp__pubkey__t.html"title="PCP public key structure.">pcp_pubkey_t</a> *key);</div>
<divclass="line"><aname="l00429"></a><spanclass="lineno"> 429</span> <spanclass="keywordtype">int</span><aclass="code"href="group__KEYS.html#ga749e28028744cf7206492911564c559a"title="Make a sanity check of the given secret key structure.">pcp_sanitycheck_key</a>(<aclass="code"href="struct__pcp__key__t.html"title="PCP private key structure.">pcp_key_t</a> *key);</div>
<divclass="line"><aname="l00441"></a><spanclass="lineno"> 441</span> <spanclass="keywordtype">void</span><aclass="code"href="group__KEYS.html#gaf37d43db0d210b3fbeab0929e3a76ebf"title="Dump a public key structure to stderr.">pcp_dumppubkey</a>(<aclass="code"href="struct__pcp__pubkey__t.html"title="PCP public key structure.">pcp_pubkey_t</a> *k);</div>