|  | #include "os.h" | 
|  | #include <mp.h> | 
|  | #include <libsec.h> | 
|  |  | 
|  | EGpub* | 
|  | egpuballoc(void) | 
|  | { | 
|  | EGpub *eg; | 
|  |  | 
|  | eg = mallocz(sizeof(*eg), 1); | 
|  | if(eg == nil) | 
|  | sysfatal("egpuballoc"); | 
|  | return eg; | 
|  | } | 
|  |  | 
|  | void | 
|  | egpubfree(EGpub *eg) | 
|  | { | 
|  | if(eg == nil) | 
|  | return; | 
|  | mpfree(eg->p); | 
|  | mpfree(eg->alpha); | 
|  | mpfree(eg->key); | 
|  | free(eg); | 
|  | } | 
|  |  | 
|  |  | 
|  | EGpriv* | 
|  | egprivalloc(void) | 
|  | { | 
|  | EGpriv *eg; | 
|  |  | 
|  | eg = mallocz(sizeof(*eg), 1); | 
|  | if(eg == nil) | 
|  | sysfatal("egprivalloc"); | 
|  | return eg; | 
|  | } | 
|  |  | 
|  | void | 
|  | egprivfree(EGpriv *eg) | 
|  | { | 
|  | if(eg == nil) | 
|  | return; | 
|  | mpfree(eg->pub.p); | 
|  | mpfree(eg->pub.alpha); | 
|  | mpfree(eg->pub.key); | 
|  | mpfree(eg->secret); | 
|  | free(eg); | 
|  | } | 
|  |  | 
|  | EGsig* | 
|  | egsigalloc(void) | 
|  | { | 
|  | EGsig *eg; | 
|  |  | 
|  | eg = mallocz(sizeof(*eg), 1); | 
|  | if(eg == nil) | 
|  | sysfatal("egsigalloc"); | 
|  | return eg; | 
|  | } | 
|  |  | 
|  | void | 
|  | egsigfree(EGsig *eg) | 
|  | { | 
|  | if(eg == nil) | 
|  | return; | 
|  | mpfree(eg->r); | 
|  | mpfree(eg->s); | 
|  | free(eg); | 
|  | } |