int tclcommand_inter_coulomb_parse_dh(Tcl_Interp * interp, int argc, char ** argv) { double kappa, r_cut; int i; if(argc < 2) { Tcl_AppendResult(interp, "Not enough parameters: inter coulomb dh <kappa> <r_cut>", (char *) NULL); return TCL_ERROR; } coulomb.method = COULOMB_DH; if(! ARG0_IS_D(kappa)) return TCL_ERROR; if(! ARG1_IS_D(r_cut)) return TCL_ERROR; if ( (i = dh_set_params(kappa, r_cut)) < 0) { switch (i) { case -1: Tcl_AppendResult(interp, "dh kappa must be positiv.",(char *) NULL); break; case -2: Tcl_AppendResult(interp, "dh r_cut must be positiv.",(char *) NULL); break; default: Tcl_AppendResult(interp, "unspecified error",(char *) NULL); } return TCL_ERROR; } return TCL_OK; }
int dh_set_params_cdh(double kappa, double r_cut, double eps_int, double eps_ext, double r0, double r1, double alpha) { dh_params.eps_int = eps_int; dh_params.eps_ext = eps_ext; dh_params.r0 = r0; dh_params.r1 = r1; dh_params.alpha = alpha; return dh_set_params(kappa, r_cut); }
static int dh_set_secret(struct crypto_kpp *tfm, void *buf, unsigned int len) { struct dh_ctx *ctx = dh_get_ctx(tfm); struct dh params; if (crypto_dh_decode_key(buf, len, ¶ms) < 0) return -EINVAL; if (dh_set_params(ctx, ¶ms) < 0) return -EINVAL; ctx->xa = mpi_read_raw_data(params.key, params.key_size); if (!ctx->xa) { dh_clear_params(ctx); return -EINVAL; } return 0; }