diff options
author | Bodo Möller <bodo@openssl.org> | 2001-03-08 20:55:16 +0000 |
---|---|---|
committer | Bodo Möller <bodo@openssl.org> | 2001-03-08 20:55:16 +0000 |
commit | 156e85578d180313c27e51d0bf186aa8650c49e1 (patch) | |
tree | 53fce31e7b1912e3e7df1d96e2a954a20c16e84f /crypto/ec/ecp_smpl.c | |
parent | b28ec124204a59a866af72f807ef96487f0862e1 (diff) |
Implement EC_GFp_mont_method.
Diffstat (limited to 'crypto/ec/ecp_smpl.c')
-rw-r--r-- | crypto/ec/ecp_smpl.c | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/crypto/ec/ecp_smpl.c b/crypto/ec/ecp_smpl.c index a857560bf7..204dafab2a 100644 --- a/crypto/ec/ecp_smpl.c +++ b/crypto/ec/ecp_smpl.c @@ -630,12 +630,29 @@ int ec_GFp_simple_set_compressed_coordinates_GFp(const EC_GROUP *group, EC_POINT } else { - if (!BN_mod_mul(tmp2, &group->a, x, &group->field, ctx)) goto err; + if (group->meth->field_decode) + { + if (!group->meth->field_decode(group, tmp2, &group->a, ctx)) goto err; + if (!BN_mod_mul(tmp2, tmp2, x, &group->field, ctx)) goto err; + } + else + { + if (!BN_mod_mul(tmp2, &group->a, x, &group->field, ctx)) goto err; + } + if (!BN_mod_add_quick(tmp1, tmp1, tmp2, &group->field)) goto err; } /* tmp1 := tmp1 + b */ - if (!BN_mod_add_quick(tmp1, tmp1, &group->b, &group->field)) goto err; + if (group->meth->field_decode) + { + if (!group->meth->field_decode(group, tmp2, &group->b, ctx)) goto err; + if (!BN_mod_add_quick(tmp1, tmp1, tmp2, &group->field)) goto err; + } + else + { + if (!BN_mod_add_quick(tmp1, tmp1, &group->b, &group->field)) goto err; + } if (!BN_mod_sqrt(y, tmp1, &group->field, ctx)) { |