| #include "os.h" | |
| #include <mp.h> | |
| #include <libsec.h> | |
| EGpriv* | |
| eggen(int nlen, int rounds) | |
| { | |
| EGpub *pub; | |
| EGpriv *priv; | |
| priv = egprivalloc(); | |
| pub = &priv->pub; | |
| pub->p = mpnew(0); | |
| pub->alpha = mpnew(0); | |
| pub->key = mpnew(0); | |
| priv->secret = mpnew(0); | |
| gensafeprime(pub->p, pub->alpha, nlen, rounds); | |
| mprand(nlen-1, genrandom, priv->secret); | |
| mpexp(pub->alpha, priv->secret, pub->p, pub->key); | |
| return priv; | |
| } |