Plan 9 from Bell Labs’s /usr/web/sources/plan9/sys/man/2/elgamal

Copyright © 2021 Plan 9 Foundation.
Distributed under the MIT License.
Download the Plan 9 distribution.


.TH ELGAMAL 2
.SH NAME
eggen, egencrypt, egdecrypt, egsign, egverify, egpuballoc, egpubfree, egprivalloc, egprivfree, egsigalloc, egsigfree, egprivtopub - elgamal encryption
.SH SYNOPSIS
.B #include <u.h>
.br
.B #include <libc.h>
.br
.B #include <mp.h>
.br
.B #include <libsec.h>
.PP
.B
EGpriv*	eggen(int nlen, int nrep)
.PP
.B
mpint*	egencrypt(EGpub *k, mpint *in, mpint *out)
.PP
.B
mpint*	egdecrypt(EGpriv *k, mpint *in, mpint *out)
.PP
.B
EGsig*	egsign(EGpriv *k, mpint *m)
.PP
.B
int		egverify(EGpub *k, EGsig *sig, mpint *m)
.PP
.B
EGpub*	egpuballoc(void)
.PP
.B
void		egpubfree(EGpub*)
.PP
.B
EGpriv*	egprivalloc(void)
.PP
.B
void		egprivfree(EGpriv*)
.PP
.B
EGsig*	egsigalloc(void)
.PP
.B
void		egsigfree(EGsig*)
.PP
.B
EGpub*	egprivtopub(EGpriv*)
.SH DESCRIPTION
.PP
Elgamal is a public key encryption and signature algorithm.  The owner of a key publishes
the public part of the key:
.EX
	struct EGpub
	{
		mpint	*p;	// modulus
		mpint	*alpha;	// generator
		mpint	*key;	// (encryption key) alpha**secret mod p
	};
.EE
This part can be used for encrypting data (with
.IR egencrypt )
to be sent to the owner.
The owner decrypts (with
.IR egdecrypt )
using his private key:
.EX
	struct EGpriv
	{
		EGpub	pub;
		mpint	*secret; // (decryption key)
	};
.EE
.PP
Keys are generated using
.IR eggen .
.I 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.
.I Egprivtopub
returns a newly allocated copy of the public key
corresponding to the private key.
.PP
The routines
.IR egpuballoc ,
.IR egpubfree ,
.IR egprivalloc ,
and
.I egprivfree
are provided to manage key storage.
.PP
.I Egsign
signs message
.I m
using a private key
.I k
yielding a
.EX
	struct EGsig
	{
		mpint	*r, *s;
	};
.EE
.I Egverify
returns 0 if the signature is valid and \-1 if not.
.PP
The routines
.I egsigalloc
and
.I egsigfree
are provided to manage signature storage.
.SH SOURCE
.B /sys/src/libsec
.SH SEE ALSO
.IR mp (2),
.IR aes (2),
.IR blowfish (2),
.IR des (2),
.IR dsa (2),
.IR rc4 (2),
.IR rsa (2),
.IR sechash (2),
.IR prime (2),
.IR rand (2)

Bell Labs OSI certified Powered by Plan 9

(Return to Plan 9 Home Page)

Copyright © 2021 Plan 9 Foundation. All Rights Reserved.
Comments to [email protected].