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:

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.

Receives the public parameters

Receives the public verification key \( v \)

Receives the message and signature

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

Verifies the signature of the fingerprint: