summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Add a small blurb on @SECLEVEL=nlibressl-v3.7.0tb2022-12-111-2/+8
|
* bio chain test: compress some error printingtb2022-12-101-5/+4
|
* bio chain test: deduplicate chain walking codetb2022-12-101-52/+40
|
* bio chain test: handle walking of empty chainstb2022-12-101-27/+15
| | | | | | Rework the loops walking the chains to be correct for empty chains as well. This simplifies the checking at the cost of slightly more initialization and will allow further refactoring in a subsequent check.
* bio chain test: add a consistency check for chain lengthstb2022-12-091-1/+9
|
* bn/Makefile: tidy up and simplifytb2022-12-091-16/+10
|
* bio chain test: make two errors noisytb2022-12-091-3/+11
|
* bio chain test: ensure the length of empty chains is 0tb2022-12-091-3/+9
|
* bio chain test: various minor readability tweakstb2022-12-091-6/+8
| | | | | | Align initialization in walk_backward() with walk_forward(), fix grammar in a comment and move initialization of oldhead_len in a place consistent with the other length initializations in that function
* bio chain test: fix inconsequential off-by-onetb2022-12-081-2/+2
|
* bio chain test: minor readability tweakstb2022-12-081-5/+6
|
* bio chain test: rename a few variables for consistencytb2022-12-081-29/+29
|
* bio chain test: decouple lengths of test chainstb2022-12-081-59/+89
| | | | | | Add helpers to create and destroy a linear chain of BIOs. Provide two defines for the two lengths of the test chains and make them distinct to rule out coincidences. As a bonus, the code becomes simpler.
* bio chain test: refactor link_chains_at()tb2022-12-081-198/+109
| | | | | Add helper that validate the chains. This deduplicates a lot of code and makes the heart of the test much easier to read.
* bio chain test: lose some do_{,bio_} prefixestb2022-12-081-12/+12
|
* Split biotest into its three logical partstb2022-12-084-458/+512
| | | | | | Some parts of this test rely on unportable behavior, so cannot run in portable. This way we can run more tests for portable which is helpful for analysis tools, better coverage, etc.
* biotest: Tweak long comment a bittb2022-12-081-11/+13
|
* Fix copy-paste error that left a paragraph ending in a commatb2022-12-081-3/+3
|
* Add BIO_push() and BIO_set_next() regress coveragetb2022-12-081-1/+367
| | | | | | This tests for the behavior changes in bio_lib.c r1.40 and r1.41 and makes sure that BIO_push() and BIO_set_next() act on two chains in the expected and now documented way.
* bn_mod_exp test: drop extra parentheses for readabilitytb2022-12-081-4/+4
|
* Improve the implementation of BIO_push(3) such that it changes nothingschwarze2022-12-072-6/+39
| | | | | | and reports failure if a call would result in a cycle. The algorithm used was originally suggested by jsing@. Feedback and OK tb@.
* Add references to the BIO_{push,pop}(3) exampletb2022-12-071-3/+8
| | | | | | | | | The reader may not know what digest BIOs, Base64 BIOs and file BIOs are and the relevant function names are non-obvious, hence it's not entirely trivial to find the manuals where they are explained. With these references a reader should be able to turn the example into actual code. ok schwarze
* Fix example stringtb2022-12-071-4/+4
| | | | | | If you want to Base64-encode "Hello World\n" using a BIO, you had better pass "Hello World\n" into it, not something slightly different... While we're touching this, we might as well write it the way K&R did...
* Zap extra spacetb2022-12-061-3/+3
|
* Major rewrite for accuracy and clarity, and document BIO_set_next(3).schwarze2022-12-061-37/+148
| | | | Feedback and OK tb@.
* Add a few missing headers and drop a few unused onestb2022-12-067-20/+20
| | | | In bn_test.c include bn_local.h instead of using copy-pasted prototypes.
* Make sure BIO_push(3) always preserves all invariants of the prev_bioschwarze2022-12-061-3/+10
| | | | | | | | | | | | | | | | | | | | and next_bio fields of all BIO objects in all affected chains, no matter what the arguments are. In particular, if the second argument (the one to be appended) is not at the beginning of its chain, properly detach the beginning of its chain before appending. We have weak indications that this bug might affect real-world code. For example, in FreeRDP, file libfreerdp/crypto/tls.c, function bio_rdp_tls_ctrl(), case BIO_C_SET_SSL, BIO_push(3) is definitely called with a second argument that is *not* at the beginning of its chain. Admittedly, that code is hard to fathom, but it does appear to result in a bogus prev_bio pointer without this patch. The practical impact of this bug in this and other software remains unknown; the consequences might possibly escalate up to use-after-free issues if BIO_pop(3) is afterwards called on corrupted BIO objects. OK tb@
* Improve the poorly designed BIO_set_next(3) API to always preserve allschwarze2022-12-061-3/+18
| | | | | | | | | | | | | | | | | invariants of the prev_bio and next_bio fields of all BIO objects in all involved chains, no matter which arguments this function is called with. Both real-world uses of this function (in libssl and freerdp) have been audited to make sure this makes nothing worse. We believe libssl behaves correctly before and after the patch (mostly because the second argument is NULL there), and we believe the code in freerdp behaves incorrectly before and after the patch, leaving a prev_bio pointer in place that is becoming bogus, only in a different object before and after the patch. But after the patch, that bogus pointer is due to a separate bug in BIO_push(3), which we are planning to fix afterwards. Joint work with and OK tb@.
* arithmethic -> arithmeticjsg2022-12-061-3/+3
|
* Unbreak rust-openssl-tests on sparc64tb2022-12-051-8/+4
| | | | | For the test compilation using the CC crate, base clang is good enough, so we don't need to pull in another heavy dependency just for this test.
* bn_mod_exp.c doesn't need <string.h>tb2022-12-051-2/+1
|
* userspace: remove vestigial '?' cases from top-level getopt(3) loopscheloha2022-12-042-4/+2
| | | | | | | | | | | | | getopt(3) returns '?' when it encounters a flag not present in the in the optstring or if a flag is missing its option argument. We can handle this case with the "default" failure case with no loss of legibility. Hence, remove all the redundant "case '?':" lines. Prompted by dlg@. With help from dlg@ and millert@. Link: https://marc.info/?l=openbsd-tech&m=167011979726449&w=2 ok naddy@ millert@ dlg@
* zap weird spaces $EDITOR added in previoustb2022-12-041-2/+2
|
* skip rust-openssl-tests on sparc64tb2022-12-031-3/+17
| | | | | | | | The issue is likely that the build is trying to compile some generated C code with the prehistoric gcc from base, so add a tentative workaround for that. Since I don't currently have access to a sparc64 box where I could validate this easily and check if the workaround is enough, let's not waste lots of cycles on this.
* Clean up makefiletb2022-12-031-8/+6
|
* biotest needs bio_local.h nowtb2022-12-031-6/+7
| | | | Should have been part of the previous commit
* Test BIO_{push,pop}() along a linear chaintb2022-12-031-1/+135
|
* More cleanuptb2022-12-031-11/+8
| | | | | Drop unnecessary loading of error strings, fix error path and consistently print to stdout.
* Refactor and fix bn_mod_exp testtb2022-12-031-80/+86
| | | | | | | | | | | The amount of copy-paste in this test led to a few bugs and it was hard to spot them since things were done in random order. Use a different approach: compute the result of a^b (mod m) according to BN_mod_exp_simple(), then compare the results of all the other *_mod_exp* functions to that. Reuse the test structure from bn_mod_exp_zero.c to loop over the list of functions. This way we test more functions and don't forget to check some crucial bits.
* Add missing checks for BN_mod_exp_{non,}ct()tb2022-12-031-6/+8
| | | | | | Someone added a few more functions to test, but forgot to check their results, so if they would not do the expected thing that would only be noticed if one of the already tested functions would break.
* Fix some ancient silliness with a random bytetb2022-12-031-8/+5
| | | | | | | For nearly 25 years this test has attempted to generate random numbers of bit length between 192 and 319 bits. Unfortunately, it used an unsigned char so instead of generating numbers in the interval [-64..63] and add them to 256, it used numbers in the intervals [0..63] and [192..255]...
* Drop 'perhaps a little', plus grammar and spelling nitstb2022-12-021-5/+5
| | | | | BIO_push() and BIO_pop() are misnamed. No need to gently and politely suggest that their 'names [...] are perhaps a little misleading'.
* Revert bio_prev removaltb2022-12-022-2/+12
| | | | | | | | | As schwarze points out, you can pop any BIO in a chain, not just the first one (bonus points for a great name for this API). The internal doubly linked was used to fix up the BIO chain bio was part of when you BIO_pop() a bio that wasn't in the first position, which is explicitly allowed in our documentation and implied by OpenSSL's.
* bn_mod_exp.c: printing to stdout needs no BIOtb2022-12-021-17/+9
|
* bn_mod_exp: we have a BN_CTX available...tb2022-12-021-19/+15
| | | | Use BN_CTX_get() instead of BN_new()/BN_free().
* Check BN_rand() and BN_mod() return valuestb2022-12-021-6/+11
| | | | | CID 430848 CID 430849
* Link new bn_mod_exp_zero test to buildtb2022-12-021-1/+3
|
* Rewrite the tests that various modular exponentiation functionstb2022-12-022-148/+189
| | | | compute a^0 = 0 (mod 1) for all a from scratch.
* libcrypto/bn: switch back to manual regress targetstb2022-12-021-3/+8
| | | | | The previous change had the undesired side effect of running the super verbose run-regress-bn_test.
* regres/libssl/unit: simplify Makefiletb2022-12-021-20/+10
|