Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
ELGAMAL(3)		   Library Functions Manual		    ELGAMAL(3)

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)

       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	corre-
       sponding	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)

								    ELGAMAL(3)

NAME | SYNOPSIS | DESCRIPTION | SOURCE | SEE ALSO

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=elgamal&sektion=3&manpath=FreeBSD+12.1-RELEASE+and+Ports>

home | help