|  | #include "os.h" | 
|  | #include <mp.h> | 
|  | #include <libsec.h> | 
|  |  | 
|  | DSApub* | 
|  | dsapuballoc(void) | 
|  | { | 
|  | DSApub *dsa; | 
|  |  | 
|  | dsa = mallocz(sizeof(*dsa), 1); | 
|  | if(dsa == nil) | 
|  | sysfatal("dsapuballoc"); | 
|  | return dsa; | 
|  | } | 
|  |  | 
|  | void | 
|  | dsapubfree(DSApub *dsa) | 
|  | { | 
|  | if(dsa == nil) | 
|  | return; | 
|  | mpfree(dsa->p); | 
|  | mpfree(dsa->q); | 
|  | mpfree(dsa->alpha); | 
|  | mpfree(dsa->key); | 
|  | free(dsa); | 
|  | } | 
|  |  | 
|  |  | 
|  | DSApriv* | 
|  | dsaprivalloc(void) | 
|  | { | 
|  | DSApriv *dsa; | 
|  |  | 
|  | dsa = mallocz(sizeof(*dsa), 1); | 
|  | if(dsa == nil) | 
|  | sysfatal("dsaprivalloc"); | 
|  | return dsa; | 
|  | } | 
|  |  | 
|  | void | 
|  | dsaprivfree(DSApriv *dsa) | 
|  | { | 
|  | if(dsa == nil) | 
|  | return; | 
|  | mpfree(dsa->pub.p); | 
|  | mpfree(dsa->pub.q); | 
|  | mpfree(dsa->pub.alpha); | 
|  | mpfree(dsa->pub.key); | 
|  | mpfree(dsa->secret); | 
|  | free(dsa); | 
|  | } | 
|  |  | 
|  | DSAsig* | 
|  | dsasigalloc(void) | 
|  | { | 
|  | DSAsig *dsa; | 
|  |  | 
|  | dsa = mallocz(sizeof(*dsa), 1); | 
|  | if(dsa == nil) | 
|  | sysfatal("dsasigalloc"); | 
|  | return dsa; | 
|  | } | 
|  |  | 
|  | void | 
|  | dsasigfree(DSAsig *dsa) | 
|  | { | 
|  | if(dsa == nil) | 
|  | return; | 
|  | mpfree(dsa->r); | 
|  | mpfree(dsa->s); | 
|  | free(dsa); | 
|  | } |