item_t *i;
string_t e,n;
- st=safe_malloc(sizeof(*st),"rsapub_apply");
+ NEW(st);
st->cl.description="rsapub";
st->cl.type=CL_RSAPUBKEY;
st->cl.apply=NULL;
} else {
cfgfatal(loc,"rsa-public","you must provide an encryption key\n");
}
+ if (mpz_sizeinbase(&st->e, 256) > RSA_MAX_MODBYTES) {
+ cfgfatal(loc, "rsa-public", "implausibly large public exponent\n");
+ }
i=list_elem(args,1);
if (i) {
} else {
cfgfatal(loc,"rsa-public","you must provide a modulus\n");
}
+ if (mpz_sizeinbase(&st->n, 256) > RSA_MAX_MODBYTES) {
+ cfgfatal(loc, "rsa-public", "implausibly large modulus\n");
+ }
return new_closure(&st->cl);
}
MP_INT e,d,iqmp,tmp,tmp2,tmp3;
bool_t valid;
- st=safe_malloc(sizeof(*st),"rsapriv_apply");
+ NEW(st);
st->cl.description="rsapriv";
st->cl.type=CL_RSAPRIVKEY;
st->cl.apply=NULL;