Subversion Repositories planix.SVN

Rev

Blame | Last modification | View Log | RSS feed

#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;
}