Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ (2) — Plan9 4th Edition

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

mp(2)

aes(2)

blowfish(2)

des(2)

dsa(2)

rc4(2)

rsa(2)

sechash(2)

prime(2)

rand(2)

ELGAMAL(2)

NAME

eggen, egencrypt, egdecrypt, egsign, egverify, egpuballoc, egpubfree, egprivalloc, egprivfree, egsigalloc, egsigfree, egprivtopub - elgamal encryption

SYNOPSIS

­#include <u.h>
­#include <libc.h>
­#include <mp.h>
­#include <libsec.h>

EGpriv∗eggen(int nlen, int nrep)

mpint∗egencrypt(EGpub ∗k, mpint ∗in, mpint ∗out)

mpint∗egdecrypt(EGpriv ∗k, mpint ∗in, mpint ∗out)

EGsig∗egsign(EGpriv ∗k, mpint ∗m)

integverify(EGpub ∗k, EGsig ∗sig, mpint ∗m)

EGpub∗egpuballoc(void)

voidegpubfree(EGpub∗)

EGpriv∗egprivalloc(void)

voidegprivfree(EGpriv∗)

EGsig∗egsigalloc(void)

voidegsigfree(EGsig∗)

EGpub∗egprivtopub(EGpriv∗)

DESCRIPTION

Elgamal is a public key encryption and signature algorithm.  The owner of a key publishes the public part of the key:

struct EGpub
{
mpint∗p;// modulus
mpint∗alpha;// generator
mpint∗key;// (encryption key) alpha∗∗secret mod p
};

This part can be used for encrypting data (with egencrypt) to be sent to the owner. The owner decrypts (with egdecrypt) using his private key:

struct EGpriv
{
EGpubpub;
mpint∗secret; // (decryption key)
};

Keys are generated using eggen. ­Eggen takes both bit length of the modulus and the number of repetitions of the Miller-Rabin primality test to run.  If the latter is 0, it does the default number of rounds.  ­Egprivtopub returns a newly allocated copy of the public key corresponding to the private key. 

The routines egpuballoc, egpubfree, egprivalloc, and ­egprivfree are provided to manage key storage. 

­Egsign signs message ­m using a private key ­k yielding a

struct EGsig
{
mpint∗r, ∗s;
};

­Egverify returns 0 if the signature is valid and −1 if not. 

The routines ­egsigalloc and ­egsigfree are provided to manage signature storage. 

SOURCE

­/sys/src/libsec

SEE ALSO

mp(2), aes(2), blowfish(2), des(2), dsa(2), rc4(2), rsa(2), sechash(2), prime(2), rand(2)

Plan 9  —  July 25, 2002

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026