GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages


Manual Reference Pages  -  ELGAMAL (3)

NAME

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

CONTENTS

Synopsis
Description
Source
See Also

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)

int             egverify(EGpub *k, EGsig *sig, mpint *m)

EGpub*  egpuballoc(void)

void            egpubfree(EGpub*)

EGpriv* egprivalloc(void)

void            egprivfree(EGpriv*)

EGsig*  egsigalloc(void)

void            egsigfree(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
        {
                EGpub   pub;
                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

/usr/local/plan9/src/libsec

SEE ALSO

mp(3), aes(3), blowfish(3), des(3), dsa(3), rc4(3), rsa(3), sechash(3), prime(3), rand(3)
Search for    or go to Top of page |  Section 3 |  Main Index


ELGAMAL (3) -->

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.