summaryrefslogtreecommitdiffstats
path: root/crypto/ffc/ffc_params_validate.c
diff options
context:
space:
mode:
Diffstat (limited to 'crypto/ffc/ffc_params_validate.c')
-rw-r--r--crypto/ffc/ffc_params_validate.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/crypto/ffc/ffc_params_validate.c b/crypto/ffc/ffc_params_validate.c
index f3df0c2b39..821ff3e88a 100644
--- a/crypto/ffc/ffc_params_validate.c
+++ b/crypto/ffc/ffc_params_validate.c
@@ -78,3 +78,29 @@ int ffc_params_FIPS186_2_validate(OPENSSL_CTX *libctx, const FFC_PARAMS *params,
FFC_PARAM_MODE_VERIFY, type,
L, N, res, cb);
}
+
+/*
+ * This does a simple check of L and N and partial g.
+ * It makes no attempt to do a full validation of p, q or g since these require
+ * extra parameters such as the digest and seed, which may not be available for
+ * this test.
+ */
+int ffc_params_simple_validate(OPENSSL_CTX *libctx, FFC_PARAMS *params, int type)
+{
+ int ret, res = 0;
+ int save_gindex;
+ unsigned int save_flags;
+
+ if (params == NULL)
+ return 0;
+
+ save_flags = params->flags;
+ save_gindex = params->gindex;
+ params->flags = FFC_PARAM_FLAG_VALIDATE_G;
+ params->gindex = FFC_UNVERIFIABLE_GINDEX;
+
+ ret = ffc_params_FIPS186_4_validate(libctx, params, type, &res, NULL);
+ params->flags = save_flags;
+ params->gindex = save_gindex;
+ return ret != FFC_PARAM_RET_STATUS_FAILED;
+}