| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
| |
OPENSSL_cpuid_setup() is no longer exported and is now only ever run under
pthread_once().
ok joshua@ tb@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This switches to using the X509_get_signature_info() API instead of hand
rolling a part of it. This is slightly tangly since the security level API
is strange. In particular, some failures are passed to the security level
callback so that applications can override them.
This makes the security level API handle RSA-PSS and EdDSA certificates
correctly and the handshake with such can progress a bit further. Of note,
we check that the certs are actually suitable for use in TLS per RFC 8446
contrary to what OpenSSL does.
ok beck jsing
|
| |
|
|
|
|
|
|
|
|
| |
This provides a non-trivial non-builtin curve that is unlikely to ever
become a builtin curve. This exercises the cofactor guessing code and
and ensures that things work as far as they can with a custom OID. The
main reason for adding it is to have a "real-world" example for an
upcoming check that EC parameters represent a builtin curve.
|
|
|
|
| |
silences an annoying warning
|
| |
|
|
|
|
|
|
|
|
| |
These are more ergonomic, result in more readable code, avoid a copy and
we no longer ignore a possible memory allocation error due to API misdesign
and bad code.
ok jsing
|
|
|
|
|
|
| |
While this is public API in OpenSSL, there are no plans to expose it.
ok jsing
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
SEC 1, section 2.3.5, is explicit that the encoding of an element of the
field of definition for an elliptic curve needs to be a zero-padded octet
string whose length matches the byte size of the field's degree. So use
BN_bn2binpad() to fix this. Factor things into a simple helper to avoid
copy-pasting.
This gets rid of some of the most grotesque code in this file.
ok jsing
|
|
|
|
|
|
| |
Also remove a pointless cast.
ok jsing
|
|
|
|
| |
ok jsing
|
| |
|
|
|
|
|
|
| |
Ensure all builtin curves can be roundtripped through DER as named curves,
via explicit parameterization, using uncompressed, compressed and hybrid
point formats.
|
|
|
|
|
|
|
|
| |
Drop about 1/4 of the lines in here by avoiding the use of a variable.
For some reason the API in this file made me go listen to Pow R. Toc H.
All of a sudden the lyrics made sense. I should probably be worried.
ok beck jsing
|
|
|
|
|
|
|
| |
No idea how anyone would think that tmp_1 and tmp_2 are better suited for
this.
ok jsing
|
|
|
|
|
|
|
|
| |
This drops some unnecessary freeing that was turned into a double free
reachable via public API in OpenSSL 1.1. Other than that it unindents
code and uses better variable names.
ok jsing
|
|
|
|
|
|
|
| |
Only check for the OPENSSL_EC_NAMED_CURVE being set to treat the curve
parameters as named curve parameters.
ok jsing
|
|
|
|
| |
ok jsing
|
|
|
|
|
|
| |
The callers already ensure that params != NULL.
ok jsing
|
|
|
|
| |
ok jsing
|
|
|
|
|
|
|
| |
Use better variable names and do things in a slightly more sensible order.
This way the code becomes almost self-documenting.
ok jsing
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
err_build_SYS_str_reasons() is only called during initialisation, under
pthread_once(). As such, there is no need to grab CRYPTO_LOCK_ERR or
check for reentrant calls.
ok tb@
|
|
|
|
| |
ok tb@
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
Provide err_load_const_strings(), which takes a const ERR_STRING_DATA *
and does not perform a library error value fixup. Make ERR_str_*[] tables
const.
ok tb@
|
|
|
|
|
|
|
|
| |
This is currently added via err_load_strings(), which means
ERR_str_functs[] cannot be made const. Adding ERR_LIB_SYS means the fixup
becomes unnecessary.
ok tb@
|
|
|
|
| |
These are dynamically populated based on strerror() values.
|
|
|
|
|
|
|
| |
Its only caller passes NULL, so we can simplify the entry point and the
exit of this function a bit.
ok jsing
|
|
|
|
|
|
|
| |
The parameters argument is always NULL, so we can simplify this helper
accordingly.
ok jsing
|
|
|
|
|
|
|
|
| |
priv_key->parameters is always NULL at this point, since its corresponding
entry in the ASN.1 template has ASN1_TFLG_OPTIONAL set, so there is no point
in pretending to pass it to ec_asn1_group2pkparameters().
ok jsing
|
|
|
|
|
|
|
|
| |
Use better variable names and turn it into single-exit. This changes the
behavior slightly in that an error is pushed onto the stack also for
i2d_ECPKPARAMETERS() return values < 0.
ok jsing
|
|
|
|
| |
ok beck jsing
|
|
|
|
| |
Nothing uses this and it collides with ALPN
|
|
|
|
| |
This is so gross...
|
|
|
|
| |
ok beck
|
|
|
|
|
|
|
|
| |
For every TLS alert there needs a corresponding error with error code
having an offset of SSL_AD_REASON_OFFSET (aka 1000), otherwise the error
stack fails to set the reason correctly.
ok beck
|
|
|
|
|
|
|
|
| |
This was only used by the NIST method. For all other group methods it's
an uninitialized pointer (as EC_GROUP_new() still uses the malloc + set
all members to 0 idiom).
ok jsing
|
|
|
|
| |
They aren't used outside of this file.
|
|
|
|
|
|
|
| |
Same issue/leak as for BN_to_ASN1_INTEGER(). Stop reusing the elliptic
curve parameters a and b for order and cofacter. It's confusing.
ok jsing
|
|
|
|
| |
ok jsing
|
|
|
|
|
|
|
| |
You can either let this API reuse an existing ASN1_INTEGER or you can let
it allocate a new one. If you try to do both at the same time, you'll leak.
ok jsing
|
|
|
|
|
|
|
|
|
|
|
| |
The brilliant idea of installing a fragile non-idempotent cleanup atexit
handler as a library has bitten many people over time. This gets particularly
exciting when you can't control who dlopens the lib first (don't we all love
Python bindings) or if you are in a threaded context. Fake OpenSSL clones
chose not to do this but now get to carry a noop flag since people start
opting out of this madness (there's a good old tradition at work here).
ok beck joshua jsing millert miod
|
| |
|
|
|
|
|
| |
Reorder functions so that things are somewhat more logical, moving internal
functions towards the top (and removing now unnecessary prototypes).
|
|
|
|
|
|
|
|
|
|
|
|
| |
Like all good OpenSSL code, errors was built to be completely extensible.
Thankfully, the ERR_{get,set}_implementation() functions were removed in
r1.127 of err.c, which means that the extensibility can no longer be used.
Take the first of many steps to clean up this code - remove err_fns and
associated machinery, calling functions directly. Rename so that we have
an 'err_' prefix rather than 'int_' (or nothing).
ok joshua@ tb@
|