Lines Matching refs:eckey

29 static int ecdsa_keygen_pairwise_test(EC_KEY *eckey, OSSL_CALLBACK *cb,
204 ENGINE *EC_KEY_get0_engine(const EC_KEY *eckey)
206 return eckey->engine;
209 int EC_KEY_generate_key(EC_KEY *eckey)
211 if (eckey == NULL || eckey->group == NULL) {
215 if (eckey->meth->keygen != NULL) {
218 ret = eckey->meth->keygen(eckey);
220 eckey->dirty_cnt++;
228 int ossl_ec_key_gen(EC_KEY *eckey)
232 ret = eckey->group->meth->keygen(eckey);
235 eckey->dirty_cnt++;
245 * eckey An EC key object that contains domain params. The generated keypair
251 static int ec_generate_key(EC_KEY *eckey, int pairwise_test)
258 const EC_GROUP *group = eckey->group;
259 BN_CTX *ctx = BN_CTX_secure_new_ex(eckey->libctx);
260 int sm2 = EC_KEY_get_flags(eckey) & EC_FLAG_SM2_RANGE ? 1 : 0;
265 if (eckey->priv_key == NULL) {
270 priv_key = eckey->priv_key;
307 if (eckey->pub_key == NULL) {
312 pub_key = eckey->pub_key;
318 eckey->priv_key = priv_key;
319 eckey->pub_key = pub_key;
323 eckey->dirty_cnt++;
334 OSSL_SELF_TEST_get_callback(eckey->libctx, &cb, &cbarg);
335 ok = ecdsa_keygen_pairwise_test(eckey, cb, cbarg);
341 BN_clear(eckey->priv_key);
342 if (eckey->pub_key != NULL)
343 EC_POINT_set_to_infinity(group, eckey->pub_key);
353 int ossl_ec_key_simple_generate_key(EC_KEY *eckey)
355 return ec_generate_key(eckey, 0);
358 int ossl_ec_key_simple_generate_public_key(EC_KEY *eckey)
361 BN_CTX *ctx = BN_CTX_new_ex(eckey->libctx);
370 ret = EC_POINT_mul(eckey->group, eckey->pub_key, eckey->priv_key, NULL,
375 eckey->dirty_cnt++;
380 int EC_KEY_check_key(const EC_KEY *eckey)
382 if (eckey == NULL || eckey->group == NULL || eckey->pub_key == NULL) {
387 if (eckey->group->meth->keycheck == NULL) {
392 return eckey->group->meth->keycheck(eckey);
441 int ossl_ec_key_public_check_quick(const EC_KEY *eckey, BN_CTX *ctx)
443 if (eckey == NULL || eckey->group == NULL || eckey->pub_key == NULL) {
449 if (EC_POINT_is_at_infinity(eckey->group, eckey->pub_key)) {
455 if (!ec_key_public_range_check(ctx, eckey)) {
461 if (EC_POINT_is_on_curve(eckey->group, eckey->pub_key, ctx) <= 0) {
472 int ossl_ec_key_public_check(const EC_KEY *eckey, BN_CTX *ctx)
478 if (!ossl_ec_key_public_check_quick(eckey, ctx))
481 point = EC_POINT_new(eckey->group);
485 order = eckey->group->order;
491 if (!EC_POINT_mul(eckey->group, point, NULL, eckey->pub_key, order, ctx)) {
495 if (!EC_POINT_is_at_infinity(eckey->group, point)) {
510 int ossl_ec_key_private_check(const EC_KEY *eckey)
512 if (eckey == NULL || eckey->group == NULL || eckey->priv_key == NULL) {
516 if (BN_cmp(eckey->priv_key, BN_value_one()) < 0
517 || BN_cmp(eckey->priv_key, eckey->group->order) >= 0) {
529 int ossl_ec_key_pairwise_check(const EC_KEY *eckey, BN_CTX *ctx)
534 if (eckey == NULL
535 || eckey->group == NULL
536 || eckey->pub_key == NULL
537 || eckey->priv_key == NULL) {
542 point = EC_POINT_new(eckey->group);
547 if (!EC_POINT_mul(eckey->group, point, eckey->priv_key, NULL, NULL, ctx)) {
551 if (EC_POINT_cmp(eckey->group, point, eckey->pub_key, ctx) != 0) {
572 int ossl_ec_key_simple_check_key(const EC_KEY *eckey)
577 if (eckey == NULL) {
581 if ((ctx = BN_CTX_new_ex(eckey->libctx)) == NULL)
584 if (!ossl_ec_key_public_check(eckey, ctx))
587 if (eckey->priv_key != NULL) {
588 if (!ossl_ec_key_private_check(eckey)
589 || !ossl_ec_key_pairwise_check(eckey, ctx))
899 size_t EC_KEY_priv2oct(const EC_KEY *eckey,
902 if (eckey->group == NULL || eckey->group->meth == NULL)
904 if (eckey->group->meth->priv2oct == NULL) {
909 return eckey->group->meth->priv2oct(eckey, buf, len);
912 size_t ossl_ec_key_simple_priv2oct(const EC_KEY *eckey,
917 buf_len = (EC_GROUP_order_bits(eckey->group) + 7) / 8;
918 if (eckey->priv_key == NULL)
927 if (BN_bn2binpad(eckey->priv_key, buf, buf_len) == -1) {
935 int EC_KEY_oct2priv(EC_KEY *eckey, const unsigned char *buf, size_t len)
939 if (eckey->group == NULL || eckey->group->meth == NULL)
941 if (eckey->group->meth->oct2priv == NULL) {
945 ret = eckey->group->meth->oct2priv(eckey, buf, len);
947 eckey->dirty_cnt++;
951 int ossl_ec_key_simple_oct2priv(EC_KEY *eckey, const unsigned char *buf,
954 if (eckey->priv_key == NULL)
955 eckey->priv_key = BN_secure_new();
956 if (eckey->priv_key == NULL) {
960 if (BN_bin2bn(buf, len, eckey->priv_key) == NULL) {
964 eckey->dirty_cnt++;
968 size_t EC_KEY_priv2buf(const EC_KEY *eckey, unsigned char **pbuf)
973 len = EC_KEY_priv2oct(eckey, NULL, 0);
980 len = EC_KEY_priv2oct(eckey, buf, len);
989 int EC_KEY_can_sign(const EC_KEY *eckey)
991 if (eckey->group == NULL || eckey->group->meth == NULL
992 || (eckey->group->meth->flags & EC_FLAGS_NO_SIGN))
1006 static int ecdsa_keygen_pairwise_test(EC_KEY *eckey, OSSL_CALLBACK *cb,
1022 sig = ECDSA_do_sign(dgst, dgst_len, eckey);
1028 if (ECDSA_do_verify(dgst, dgst_len, sig, eckey) != 1)