1 cfa37a7b 2004-04-10 devnull .TH ELGAMAL 3
3 cfa37a7b 2004-04-10 devnull eggen, egencrypt, egdecrypt, egsign, egverify, egpuballoc, egpubfree, egprivalloc, egprivfree, egsigalloc, egsigfree, egprivtopub - elgamal encryption
4 cfa37a7b 2004-04-10 devnull .SH SYNOPSIS
5 cfa37a7b 2004-04-10 devnull .B #include <u.h>
7 cfa37a7b 2004-04-10 devnull .B #include <libc.h>
9 cfa37a7b 2004-04-10 devnull .B #include <mp.h>
11 cfa37a7b 2004-04-10 devnull .B #include <libsec.h>
14 cfa37a7b 2004-04-10 devnull EGpriv* eggen(int nlen, int nrep)
17 cfa37a7b 2004-04-10 devnull mpint* egencrypt(EGpub *k, mpint *in, mpint *out)
20 cfa37a7b 2004-04-10 devnull mpint* egdecrypt(EGpriv *k, mpint *in, mpint *out)
23 cfa37a7b 2004-04-10 devnull EGsig* egsign(EGpriv *k, mpint *m)
26 cfa37a7b 2004-04-10 devnull int egverify(EGpub *k, EGsig *sig, mpint *m)
29 cfa37a7b 2004-04-10 devnull EGpub* egpuballoc(void)
32 cfa37a7b 2004-04-10 devnull void egpubfree(EGpub*)
35 cfa37a7b 2004-04-10 devnull EGpriv* egprivalloc(void)
38 cfa37a7b 2004-04-10 devnull void egprivfree(EGpriv*)
41 cfa37a7b 2004-04-10 devnull EGsig* egsigalloc(void)
44 cfa37a7b 2004-04-10 devnull void egsigfree(EGsig*)
47 cfa37a7b 2004-04-10 devnull EGpub* egprivtopub(EGpriv*)
48 cfa37a7b 2004-04-10 devnull .SH DESCRIPTION
50 cfa37a7b 2004-04-10 devnull Elgamal is a public key encryption and signature algorithm. The owner of a key publishes
51 cfa37a7b 2004-04-10 devnull the public part of the key:
53 cfa37a7b 2004-04-10 devnull struct EGpub
55 cfa37a7b 2004-04-10 devnull mpint *p; // modulus
56 cfa37a7b 2004-04-10 devnull mpint *alpha; // generator
57 cfa37a7b 2004-04-10 devnull mpint *key; // (encryption key) alpha**secret mod p
60 cfa37a7b 2004-04-10 devnull This part can be used for encrypting data (with
61 cfa37a7b 2004-04-10 devnull .IR egencrypt )
62 cfa37a7b 2004-04-10 devnull to be sent to the owner.
63 cfa37a7b 2004-04-10 devnull The owner decrypts (with
64 cfa37a7b 2004-04-10 devnull .IR egdecrypt )
65 cfa37a7b 2004-04-10 devnull using his private key:
67 cfa37a7b 2004-04-10 devnull struct EGpriv
69 cfa37a7b 2004-04-10 devnull EGpub pub;
70 cfa37a7b 2004-04-10 devnull mpint *secret; // (decryption key)
74 cfa37a7b 2004-04-10 devnull Keys are generated using
75 cfa37a7b 2004-04-10 devnull .IR eggen .
77 cfa37a7b 2004-04-10 devnull takes both bit length of the modulus
78 cfa37a7b 2004-04-10 devnull and the number of repetitions of the Miller-Rabin
79 cfa37a7b 2004-04-10 devnull primality test to run. If the latter is 0, it does the default number
80 cfa37a7b 2004-04-10 devnull of rounds.
81 cfa37a7b 2004-04-10 devnull .I Egprivtopub
82 cfa37a7b 2004-04-10 devnull returns a newly allocated copy of the public key
83 cfa37a7b 2004-04-10 devnull corresponding to the private key.
85 cfa37a7b 2004-04-10 devnull The routines
86 cfa37a7b 2004-04-10 devnull .IR egpuballoc ,
87 cfa37a7b 2004-04-10 devnull .IR egpubfree ,
88 cfa37a7b 2004-04-10 devnull .IR egprivalloc ,
90 cfa37a7b 2004-04-10 devnull .I egprivfree
91 cfa37a7b 2004-04-10 devnull are provided to manage key storage.
93 cfa37a7b 2004-04-10 devnull .I Egsign
94 cfa37a7b 2004-04-10 devnull signs message
96 cfa37a7b 2004-04-10 devnull using a private key
98 cfa37a7b 2004-04-10 devnull yielding a
100 cfa37a7b 2004-04-10 devnull struct EGsig
102 cfa37a7b 2004-04-10 devnull mpint *r, *s;
105 cfa37a7b 2004-04-10 devnull .I Egverify
106 cfa37a7b 2004-04-10 devnull returns 0 if the signature is valid and \-1 if not.
108 cfa37a7b 2004-04-10 devnull The routines
109 cfa37a7b 2004-04-10 devnull .I egsigalloc
111 cfa37a7b 2004-04-10 devnull .I egsigfree
112 cfa37a7b 2004-04-10 devnull are provided to manage signature storage.
113 cfa37a7b 2004-04-10 devnull .SH SOURCE
114 c3674de4 2005-01-11 devnull .B \*9/src/libsec
115 cfa37a7b 2004-04-10 devnull .SH SEE ALSO
116 bf8a59fa 2004-04-11 devnull .IR mp (3),
117 bf8a59fa 2004-04-11 devnull .IR aes (3),
118 bf8a59fa 2004-04-11 devnull .IR blowfish (3),
119 bf8a59fa 2004-04-11 devnull .IR des (3),
120 bf8a59fa 2004-04-11 devnull .IR dsa (3),
121 bf8a59fa 2004-04-11 devnull .IR rc4 (3),
122 bf8a59fa 2004-04-11 devnull .IR rsa (3),
123 bf8a59fa 2004-04-11 devnull .IR sechash (3),
124 bf8a59fa 2004-04-11 devnull .IR prime (3),
125 bf8a59fa 2004-04-11 devnull .IR rand (3)