chez-libs

Artifact [85a8b41228]
Login

Artifact 85a8b4122853e51456aa12282ff4e46b98d0cb54:

Wiki page [(crypto tweetnacl)] by murphy 2016-05-22 10:27:17.
D 2016-05-22T10:27:17.340
L (crypto\stweetnacl)
P 2a3557c4ae567e09fff594558fa2a6116afead8b
U murphy
W 4378
<h1>TweetNaCl Bindings</h1>

<h2>Synopsis</h2>

<code>(import (crypto tweetnacl))</code>

Bindings to the [https://tweetnacl.cr.yp.to/|TweetNaCl] library of cryptographic operations.

<h2>Keys</h2>

<h3>record: <code>key</code></h3>
<h3>procedure: <code>(key? <i>any</i>)</code></h3>
<h3>procedure: <code>(make-key <i>algorithm</i> <i>public</i> <i>secret</i>)</code></h3>
<h3>procedure: <code>(key-algorithm <i>key</i>)</code></h3>
<h3>procedure: <code>(public-key <i>key</i>)</code></h3>
<h3>procedure: <code>(secret-key <i>key</i>)</code></h3>

Keys are represented by record instances that hold an algorithm name, a public key bytevector and a secret key bytevector. Depending on the algorithm and intended use of the key, either the public or secret component may be <tt>#f</tt>.

<h3>procedure: <code>(check-key <i>who</i> <i>algorithm</i> <i>any</i>)</code></h3>

Ensures that the given value is a key with the given algorithm name and returns the key. If the value does not pass the check, an error condition is raised that contains a <tt>&who</tt> condition indicating the given location.

<h2>Asymmetric Boxes</h2>

<h3>constant: <code>asymmetric-box-algorithm</code></h3>

The name of the asymmetric box algorithm.

<h3>constant: <code>asymmetric-box-publickeybytes</code></h3>
<h3>constant: <code>asymmetric-box-secretkeybytes</code></h3>
<h3>constant: <code>asymmetric-box-noncebytes</code></h3>

Byte lengths of algorithm parameters.

<h3>procedure: <code>(make-asymmetric-box-key)</code></h3>
<h3>procedure: <code>(make-asymmetric-box-key <i>port</i>)</code></h3>

Generate a new keypair using entropy from the given port or from <tt>(current-entropy-port)</tt>.

<h3>procedure: <code>((asymmetric-box <i>pk</i> <i>sk</i>) <i>data</i> <i>nonce</i>)</code></h3>
<h3>procedure: <code>((asymmetric-unbox <i>pk</i> <i>sk</i>) <i>data</i> <i>nonce</i>)</code></h3>

Perform key agreement and return boxing and unboxing procedures.

<h2>Asymmetric Signatures</h2>

<h3>constant: <code>asymmetric-sign-algorithm</code></h3>

The name of the asymmetric signature algorithm.

<h3>constant: <code>asymmetric-sign-publickeybytes</code></h3>
<h3>constant: <code>asymmetric-sign-secretkeybytes</code></h3>

Byte lengths of algorithm parameters.

<h3>procedure: <code>(make-asymmetric-sign-key)</code></h3>
<h3>procedure: <code>(make-asymmetric-sign-key <i>port</i>)</code></h3>

Generate a new keypair using entropy from the given port or from <tt>(current-entropy-port)</tt>.

<h3>procedure: <code>((asymmetric-sign <i>sk</i>) <i>data</i>)</code></h3>
<h3>procedure: <code>((asymmetric-verify <i>pk</i>) <i>data</i>)</code></h3>

Create signature and verification procedures.

<h2>Symmetric Boxes</h2>

<h3>constant: <code>symmetric-box-algorithm</code></h3>

The name of the symmetric box algorithm.

<h3>constant: <code>symmetric-box-keybytes</code></h3>
<h3>constant: <code>symmetric-box-noncebytes</code></h3>

Byte lengths of algorithm parameters.

<h3>procedure: <code>(make-symmetric-box-key)</code></h3>
<h3>procedure: <code>(make-symmetric-box-key <i>port</i>)</code></h3>

Generate a new key using entropy from the given port or from <tt>(current-entropy-port)</tt>.

<h3>procedure: <code>((symmetric-box <i>k</i>) <i>data</i> <i>nonce</i>)</code></h3>
<h3>procedure: <code>((symmetric-unbox <i>k</i>) <i>data</i> <i>nonce</i>)</code></h3>

Create boxing and unboxing procedures.

<h2>Symmetric Signatures</h2>

<h3>constant: <code>symmetric-sign-algorithm</code></h3>

The name of the symmetric signature algorithm.

<h3>constant: <code>symmetric-sign-keybytes</code></h3>

Byte lengths of algorithm parameters.

<h3>procedure: <code>(make-symmetric-sign-key)</code></h3>
<h3>procedure: <code>(make-symmetric-sign-key <i>port</i>)</code></h3>

Generate a new key using entropy from the given port or from <tt>(current-entropy-port)</tt>.

<h3>procedure: <code>((symmetric-sign <i>k</i>) <i>data</i>)</code></h3>
<h3>procedure: <code>((symmetric-verify <i>k</i>) <i>data</i>)</code></h3>

Create signature and verification procedures.

<h2>Message Digests</h2>

<h3>constant: <code>hash-algorithm</code></h3>

The name of the message digest algorithm.

<h3>procedure: <code>(hash <i>data</i>)</code></h3>

Compute the message digest of binary data.

Z a9204339826339acf8a1d75d7517f181