### Samantha

##### Parameters known by Samantha:

Computes the generator $g$:

Computes the fingerprint $\mathcal{H}(m)$:

Computes the public verification key $v$:

Chooses the ephemeral key $e$:

Computes the signature of the fingerprint:

### Step y/x

Enter the message (or integer) that Samantha wants to sign:

Hit enter to generate the parameters and use the left and right arrow keys to navigate.

A trusted third party chooses two prime numbers $q$ and $p$ and a generator $g_{1}$ of the group $\mathbb{Z}_{p}$.

The generator $g_{1}$ is used to compute another generator $g$ of order $q$ from the group $\mathbb{Z}_{p}^{*}$.

Samantha and Victor receives the two prime numbers $p$ and $q$ and the generator $g$.

Samantha computes the fingerprint $\mathcal{H}(m)$ of the message $m$ by using a public known hash function $\mathcal{H}$.

Samantha chooses a secret signing exponent $s$ and computes the public verification exponent $v$, which she sends to Victor.

In the signature Samantha needs an ephemeral key $e$ that is unique for this signature.

Samantha computes the signature of the fingerprint $\mathcal{H}(m)$ which consists of two parts $\sigma_{1}$ and $\sigma_{2}$. In the computation she uses the concatenation operation $\|$.

She then sends the message $m$ and the signature $(\sigma_{1}, \sigma_{2})$ to Victor.

Victor uses the same hash function $\mathcal{H}$ as Samantha to compute the fingerprint $\mathcal{H}(m)$ of the message $m$.

If nobody has tampered with the content of the message Victor gets the same fingerprint as Samantha.

Victor verifies the signature of the fingerprint $\mathcal{H}(m)$ where he uses the concatenation operation $\|$.

If the two computed values are equals, the message was signed by Samantha and nobody has tampered with the content of the message.

### Victor

##### Parameters known by Victor:

Receives the public verification key $v$
Computes the fingerprint $\mathcal{H}(m)$: