22 lines
413 B
C
22 lines
413 B
C
#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;
|
|
}
|