summaryrefslogtreecommitdiff
path: root/static/plan9-4e/man2/elgamal.2
diff options
context:
space:
mode:
Diffstat (limited to 'static/plan9-4e/man2/elgamal.2')
-rw-r--r--static/plan9-4e/man2/elgamal.292
1 files changed, 92 insertions, 0 deletions
diff --git a/static/plan9-4e/man2/elgamal.2 b/static/plan9-4e/man2/elgamal.2
new file mode 100644
index 00000000..5fcd8cf7
--- /dev/null
+++ b/static/plan9-4e/man2/elgamal.2
@@ -0,0 +1,92 @@
+.TH ELGAMAL 2
+.SH NAME
+eggen, egencrypt, egdecrypt, egsign, egverify, egalloc, egfree, 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
+The corresponding keys for the ElGamal algorithm are:
+.EX
+ struct EGpub
+ {
+ mpint *p; // modulus
+ mpint *alpha; // generator
+ mpint *key; // (encryption key) alpha**secret mod p
+ };
+.EE
+and
+.EX
+ struct EGpriv
+ {
+ EGpub pub;
+ mpint *secret; // (decryption key)
+ };
+.EE
+.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.
+.SH SOURCE
+.B /sys/src/libsec
+.SH SEE ALSO
+.IR mp (2),
+.IR aes (2),
+.IR blowfish (2),
+.IR des (2),
+.IR rc4 (2),
+.IR rsa (2),
+.IR sechash (2),
+.IR prime (2),
+.IR rand (2)