Add documentation to pgp module.

This commit is contained in:
Spencer Ofwiti
2021-05-12 13:21:18 +03:00
parent 948a735baf
commit 948554563d
27 changed files with 3154 additions and 744 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -63,6 +63,13 @@
<code>src/app/_pgp/pgp-signer.ts</code>
</p>
<p class="comment">
<h3>Description</h3>
</p>
<p class="comment">
<p>Provides functionality for signing and verifying signed messages. </p>
</p>
<p class="comment">
@@ -161,12 +168,14 @@
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="34" class="link-to-prism">src/app/_pgp/pgp-signer.ts:34</a></div>
<div class="io-line">Defined in <a href="" data-line="74" class="link-to-prism">src/app/_pgp/pgp-signer.ts:74</a></div>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-description"><p>Initializing the Signer.</p>
</div>
<div>
<b>Parameters :</b>
<table class="params">
@@ -175,6 +184,7 @@
<td>Name</td>
<td>Type</td>
<td>Optional</td>
<td>Description</td>
</tr>
</thead>
<tbody>
@@ -189,6 +199,12 @@
No
</td>
<td>
<code><ul>
<li>A keystore holding pgp keys.</li>
</ul>
</code>
</td>
</tr>
</tbody>
</table>
@@ -229,10 +245,16 @@
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="28" class="link-to-prism">src/app/_pgp/pgp-signer.ts:28</a></div>
<div class="io-line">Defined in <a href="" data-line="62" class="link-to-prism">src/app/_pgp/pgp-signer.ts:62</a></div>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-description"><p>Encryption algorithm used </p>
</div>
</td>
</tr>
</tbody>
</table>
@@ -256,10 +278,16 @@
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="29" class="link-to-prism">src/app/_pgp/pgp-signer.ts:29</a></div>
<div class="io-line">Defined in <a href="" data-line="64" class="link-to-prism">src/app/_pgp/pgp-signer.ts:64</a></div>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-description"><p>Message digest </p>
</div>
</td>
</tr>
</tbody>
</table>
@@ -288,10 +316,16 @@
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="27" class="link-to-prism">src/app/_pgp/pgp-signer.ts:27</a></div>
<div class="io-line">Defined in <a href="" data-line="60" class="link-to-prism">src/app/_pgp/pgp-signer.ts:60</a></div>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-description"><p>Encryption engine used. </p>
</div>
</td>
</tr>
</tbody>
</table>
@@ -315,10 +349,16 @@
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="31" class="link-to-prism">src/app/_pgp/pgp-signer.ts:31</a></div>
<div class="io-line">Defined in <a href="" data-line="68" class="link-to-prism">src/app/_pgp/pgp-signer.ts:68</a></div>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-description"><p>A keystore holding pgp keys. </p>
</div>
</td>
</tr>
</tbody>
</table>
@@ -342,10 +382,16 @@
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="34" class="link-to-prism">src/app/_pgp/pgp-signer.ts:34</a></div>
<div class="io-line">Defined in <a href="" data-line="74" class="link-to-prism">src/app/_pgp/pgp-signer.ts:74</a></div>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-description"><p>A service that provides logging capabilities. </p>
</div>
</td>
</tr>
</tbody>
</table>
@@ -369,10 +415,16 @@
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="32" class="link-to-prism">src/app/_pgp/pgp-signer.ts:32</a></div>
<div class="io-line">Defined in <a href="" data-line="70" class="link-to-prism">src/app/_pgp/pgp-signer.ts:70</a></div>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-description"><p>Event triggered on successful signing of message. </p>
</div>
</td>
</tr>
</tbody>
</table>
@@ -396,10 +448,16 @@
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="33" class="link-to-prism">src/app/_pgp/pgp-signer.ts:33</a></div>
<div class="io-line">Defined in <a href="" data-line="72" class="link-to-prism">src/app/_pgp/pgp-signer.ts:72</a></div>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-description"><p>Event triggered on successful verification of a signature. </p>
</div>
</td>
</tr>
</tbody>
</table>
@@ -423,10 +481,16 @@
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="30" class="link-to-prism">src/app/_pgp/pgp-signer.ts:30</a></div>
<div class="io-line">Defined in <a href="" data-line="66" class="link-to-prism">src/app/_pgp/pgp-signer.ts:66</a></div>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-description"><p>Generated signature </p>
</div>
</td>
</tr>
</tbody>
</table>
@@ -461,19 +525,27 @@
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="42"
class="link-to-prism">src/app/_pgp/pgp-signer.ts:42</a></div>
<div class="io-line">Defined in <a href="" data-line="90"
class="link-to-prism">src/app/_pgp/pgp-signer.ts:90</a></div>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-description"><p>Get the private key fingerprint.</p>
</div>
<div>
</div>
<div class="io-description">
<b>Returns : </b> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
</div>
<div class="io-description">
<p>A private key fingerprint.</p>
</div>
</td>
</tr>
</tbody>
@@ -502,14 +574,16 @@
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="46"
class="link-to-prism">src/app/_pgp/pgp-signer.ts:46</a></div>
<div class="io-line">Defined in <a href="" data-line="99"
class="link-to-prism">src/app/_pgp/pgp-signer.ts:99</a></div>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-description"><p>Load the message digest.</p>
</div>
<div class="io-description">
<b>Parameters :</b>
@@ -519,6 +593,7 @@
<td>Name</td>
<td>Type</td>
<td>Optional</td>
<td>Description</td>
</tr>
</thead>
<tbody>
@@ -533,6 +608,12 @@
</td>
<td>
<ul>
<li>A signable object.</li>
</ul>
</td>
</tr>
</tbody>
</table>
@@ -544,7 +625,8 @@
</div>
<div class="io-description">
<p>true - If digest has been loaded successfully.</p>
</div>
</td>
</tr>
@@ -575,14 +657,16 @@
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="83"
class="link-to-prism">src/app/_pgp/pgp-signer.ts:83</a></div>
<div class="io-line">Defined in <a href="" data-line="146"
class="link-to-prism">src/app/_pgp/pgp-signer.ts:146</a></div>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-description"><p>Signs a message using a private key.</p>
</div>
<div class="io-description">
<b>Parameters :</b>
@@ -592,6 +676,7 @@
<td>Name</td>
<td>Type</td>
<td>Optional</td>
<td>Description</td>
</tr>
</thead>
<tbody>
@@ -606,6 +691,12 @@
</td>
<td>
<ul>
<li>The message to be signed.</li>
</ul>
</td>
</tr>
</tbody>
</table>
@@ -647,14 +738,16 @@
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="51"
class="link-to-prism">src/app/_pgp/pgp-signer.ts:51</a></div>
<div class="io-line">Defined in <a href="" data-line="109"
class="link-to-prism">src/app/_pgp/pgp-signer.ts:109</a></div>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-description"><p>Verify that signature is valid.</p>
</div>
<div class="io-description">
<b>Parameters :</b>
@@ -664,6 +757,7 @@
<td>Name</td>
<td>Type</td>
<td>Optional</td>
<td>Description</td>
</tr>
</thead>
<tbody>
@@ -678,6 +772,12 @@
</td>
<td>
<ul>
<li>The message that was signed.</li>
</ul>
</td>
</tr>
<tr>
<td>signature</td>
@@ -690,6 +790,12 @@
</td>
<td>
<ul>
<li>The generated signature.</li>
</ul>
</td>
</tr>
</tbody>
</table>
@@ -717,56 +823,113 @@
<div class="tab-pane fade tab-source-code" id="c-source">
<pre class="line-numbers compodoc-sourcecode"><code class="language-typescript">import { MutableKeyStore } from &#x27;@app/_pgp/pgp-key-store&#x27;;
<pre class="line-numbers compodoc-sourcecode"><code class="language-typescript">import * as openpgp from &#x27;openpgp&#x27;;
// Application imports
import { MutableKeyStore } from &#x27;@app/_pgp/pgp-key-store&#x27;;
import { LoggingService } from &#x27;@app/_services/logging.service&#x27;;
const openpgp &#x3D; require(&#x27;openpgp&#x27;);
/** Signable object interface */
interface Signable {
/** The message to be signed. */
digest(): string;
}
/** Signature object interface */
interface Signature {
/** Encryption engine used. */
engine: string;
/** Encryption algorithm used */
algo: string;
/** Data to be signed. */
data: string;
/** Message digest */
digest: string;
}
/** Signer interface */
interface Signer {
/** Event triggered on successful signing of message. */
onsign(signature: Signature): void;
/** Event triggered on successful verification of a signature. */
onverify(flag: boolean): void;
/**
* Get the private key fingerprint.
* @returns A private key fingerprint.
*/
fingerprint(): string;
/**
* Load the message digest.
* @param material - A signable object.
* @returns true - If digest has been loaded successfully.
*/
prepare(material: Signable): boolean;
/**
* Verify that signature is valid.
* @param digest - The message that was signed.
* @param signature - The generated signature.
*/
verify(digest: string, signature: Signature): void;
/**
* Signs a message using a private key.
* @async
* @param digest - The message to be signed.
*/
sign(digest: string): Promise&lt;void&gt;;
}
/** Provides functionality for signing and verifying signed messages. */
class PGPSigner implements Signer {
/** Encryption engine used. */
engine &#x3D; &#x27;pgp&#x27;;
/** Encryption algorithm used */
algo &#x3D; &#x27;sha256&#x27;;
/** Message digest */
dgst: string;
/** Generated signature */
signature: Signature;
/** A keystore holding pgp keys. */
keyStore: MutableKeyStore;
/** Event triggered on successful signing of message. */
onsign: (signature: Signature) &#x3D;&gt; void;
/** Event triggered on successful verification of a signature. */
onverify: (flag: boolean) &#x3D;&gt; void;
/** A service that provides logging capabilities. */
loggingService: LoggingService;
/**
* Initializing the Signer.
* @param keyStore - A keystore holding pgp keys.
*/
constructor(keyStore: MutableKeyStore) {
this.keyStore &#x3D; keyStore;
this.onsign &#x3D; (signature: Signature) &#x3D;&gt; {};
this.onverify &#x3D; (flag: boolean) &#x3D;&gt; {};
}
/**
* Get the private key fingerprint.
* @returns A private key fingerprint.
*/
public fingerprint(): string {
return this.keyStore.getFingerprint();
}
/**
* Load the message digest.
* @param material - A signable object.
* @returns true - If digest has been loaded successfully.
*/
public prepare(material: Signable): boolean {
this.dgst &#x3D; material.digest();
return true;
}
/**
* Verify that signature is valid.
* @param digest - The message that was signed.
* @param signature - The generated signature.
*/
public verify(digest: string, signature: Signature): void {
openpgp.signature
.readArmored(signature.data)
@@ -799,6 +962,11 @@ class PGPSigner implements Signer {
});
}
/**
* Signs a message using a private key.
* @async
* @param digest - The message to be signed.
*/
public async sign(digest: string): Promise&lt;void&gt; {
const m &#x3D; openpgp.cleartext.fromText(digest);
const pk &#x3D; this.keyStore.getPrivateKey();
@@ -830,6 +998,7 @@ class PGPSigner implements Signer {
}
}
/** @exports */
export { Signable, Signature, Signer, PGPSigner };
</code></pre>
</div>