| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
| |
OpenSSL 1.1 and 3.2 will be removed from the ports tree, so test the two
remaining versions. Unfortunately, this requires a lot more manual
massaging than there should be.
|
|
|
|
|
| |
OpenSSL 1.1 is dead and will soon be removed from the ports tree.
At the same time OpenSSL 3.3 will become the default openssl.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Only EC_KEY_METHOD_{new,free}() need to know about this flag, so make
that more obvious.
|
| |
|
|
|
|
|
| |
Rename ec_is_on_curve() to ec_point_is_on_curve() and ec_cmp() to
ec_point_cmp().
|
|
|
|
|
| |
These were in the middle of the methods responsible for curve operations,
which makes little sense.
|
|
|
|
|
|
|
|
| |
Now that it is method-agnostic, we can remove the method and move the
implementation to the body of the public API function. And another
method goes away. We're soon down to the ones we really need.
discussed with jsing
|
|
|
|
|
|
|
|
|
|
| |
While this is nicely done, it is a bit too clever. We can do the
calculation in the normal domain rather than the Montgomery domain
and this way the method becomes method agnostic. This will be a bit
slower but since a couple of field operations are nothing compared
to the cost of BN_mod_sqrt() this isn't a concern.
ok jsing
|
|
|
|
| |
discussed with jsing
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
EC_POINTs_mul() was only ever used by Ruby and they stopped doing so for
LibreSSL when we incorporated the constant time multiplication work of
Brumley et al and restricted the length of the points array to 1, making
this API effectively useless. The only real reason you want to have an
API to calculate \sum n_i P_i is for ECDSA where you want m * G + n * P.
Whether something like his needs to be in the public API is doubtful.
EC_POINTs_make_affine() is an implementation detail of EC_POINTs_mul().
As such it never really belonged into the public API.
ok jsing
|
|
|
|
| |
ok jsing
|
|
|
|
|
|
|
|
|
|
| |
Whatever the EC_METHOD, this will always be equivalent to getting and
setting the affine coordinates, so this needs no dedicated method.
Also, this is a function that makes no real sense since a caller should
never need to care about this... As always, our favorite language bindings
thought they might have users who care. This time it's Ruby and Perl.
ok jsing
|
|
|
|
| |
ok millert operator(7)
|
|
|
|
| |
feedback jmc@ ok deraadt@ schwarze@
|
| |
|
|
|
|
| |
requested by jsing
|
|
|
|
| |
+ some whitespace cosmetics
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
OpenSSL commit 92ada7cc (2007) removed some dead code with flawed logic
attempting to print multiple lines if the line exceeded 80 characters.
Said flawed logic was there since the start of the git history importing
SSLeay 0.8.1b in 1998 and never worked. Rumor has it that it did work prior
to that. Be that as it may, it's just wrongly documented since Henson added
the docs in commit 0711be16 (2002).
Prompted by OpenSSL issue #18004 by davidben
https://github.com/quictls/quictls/pull/168
https://github.com/quictls/quictls/issues/75
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This eliminates another stupid BN_free(&bn) and uses BIO_printf() rather
than a ludicrously silly result dance. In fact it appears that this dance
was so hard to grok that OpenSSL misread it and made this function return
the value -1 on ASN1_INTEGER_to_BN() failure, a value that it had never
returned before.
It doesn't matter anyway. The only uses of this function are internal to
OpenSSL's code and since TS fully conforms to OpenSSL's high QA standards,
no caller checks the return of TS_ASN1_INTEGER_print_bio().
ok jsing
|
| |
|
|
|
|
|
|
|
|
|
|
| |
After possibly decoding a and b in EC_GROUP_get_curve(), this is a pure
calculation in GFp and as such doesn't make use of any method-specifics.
Let's perform this calculation directly in the public API implementation
rather than redirecting through the methods and remove yet another method
handler.
ok jsing
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
The degree made some sense when EC2M was a thing in libcrypto. Fortunately
that's not the case anymore. The order handler never made sense.
ok jsing
|
|
|
|
| |
requested by jsing
|
|
|
|
| |
requested by jsing
|
|
|
|
|
|
| |
This is another bit of indirection that makes this code so hard to follow.
ok jsing
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
BN_reciprocal() is only called by BN_div_recp() which in turn is only
called by BN_mod_mul_reciprocal(). So use this order and make the first
two static.
|
|
|
|
|
|
|
| |
This is usually method specific, so remove the indirection and call the
appropriate blinding function directly.
ok tb@
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is only used by ec_points_make_affine(), which is only used by the
wNAF multiplication, which is only used by ECDSA. We can afford computing
that one once per ECDSA verification given the cost of the rest of this.
Thus, the field_set_to_one() member disappears from the EC_METHOD and the
mont_one member disappears from EC_GROUP and with it all the complications
when setting/copying/freeing the group.
ok jsing
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
That the BN-driven EC code uses Jacobian projective coordinates as an
optimization is an implementation detail. As such this should never have
leaked out of the library as part of the public API. No consumer should
ever care and if they do they're doing it wrong. The only port that cares
is one of those stupid little perl modules that expose all the things and
transform terrible OpenSSL regress tests into similarly horrible Perl.
In practice, only affine coordinates matter (perhaps in compressed form).
This prunes two more function pointers from EC_GROUP and prepares the
removal of the field_set_to_one() method which is now only used in
ec_points_make_affine().
ok jsing sthen
|
|
|
|
|
| |
There's only one inverse and in standard affine coordinates it only has
one representation.
|
|
|
|
|
| |
This way we can get rid of the stupidity that is publicly exposed
Jprojective coordinates soon.
|