summaryrefslogtreecommitdiff
path: root/src/lib/libc/stdlib/reallocarray.c (unfollow)
Commit message (Collapse)AuthorFilesLines
2023-12-20Rename outl into out_len throughout the filetb1-32/+32
2023-12-20Tweak a comment a bittb1-3/+3
2023-12-20Remove block_mask from EVP_CIPHER_CTXtb2-7/+15
The block mask is only used in EVP_{De,En}cryptUpdate(). There's no need to hang it off the EVP_CIPHER_CTX since it is easy to compute and validate. ok joshua jsing
2023-12-20Add some sanity checks for EVP_CIPHER_meth_new()tb1-1/+8
Ensure that the nid and key length are non-negative and that the block size is one of the three sizes 1, 8, or 16 supported by the EVP subsystem. ok joshua jsing
2023-12-20Merge p_open and p_seal into p_legacytb4-247/+104
discussed with jsing
2023-12-20Fold p_dec.c and p_enc.c into a new p_legacy.ctb3-81/+16
discussed with jsing
2023-12-20Less confusing variable names in EVP_PKEY_{de,en}crypt_old()tb2-10/+10
ok jsing
2023-12-20Improve local variable namestb1-29/+29
Rename the slightly awkward buf_offset into partial_len and rename buf_avail into partial_needed to match. suggested by jsing
2023-12-20Rename buf_len into partial_len in EVP_CIPHER_CTXtb2-11/+11
suggested by jsing
2023-12-20Clean up EVP_DecryptFinal_ex()tb1-32/+35
Rework the code to use the usual variable names, return early if we have block size 1 and unindent the remainder of the code for block sizes 8 and 16. Rework the padding check to be less acrobatic and copy the remainder of the plain text into out using memcpy() rather than a for loop. input/ok jsing
2023-12-20Clean up EVP_EncryptFinal_ex()tb1-16/+13
This switches to the variable names used in other functions, adds a reminder to add a missing length check and uses memset for the padding. ok jsing
2023-12-20Simplify EVP_DecryptUpdate() a bittb1-26/+28
This time the block size is called b and there's some awful length fiddling with fix_len, which until recently also served as store for the return value for do_cipher()... If we land on a block boundary, we keep the last block decrypted and don't count it as part of the output. So in the next call we need to feed it back in. Feeding it back in counts as output written this time around, so instead of remembering that we need to adjust outl, keep a tally of the bytes written. This way we can also do some overflow and underflow checking. ok jsing
2023-12-20Remove commented out version of EVP_SealUpdate()tb1-13/+1
2023-12-20Remove preprocessor mess in EVP_PKEY_{de,en}crypt_old()tb2-39/+8
This was done the worst possible way. It would be much simpler to invert the logic and use a single #ifdef. jsing prefers keeping the current logic and suggested we ditch the preprocessor mess altogether. ok jsing, claudio agreed with the initial diff
2023-12-20Remove a changelog from 1991tb1-8/+1
2023-12-20DES_random_key() sets the keytb3-71/+15
There's no need to have 60 lines of license for 4 lines of actual code. Move DES_random_key() to set_key.c.
2023-12-20Remove commented-out codetb1-8/+1
2023-12-19A small cleanup of malloc_bytes(), getting rid of a goto and a tinyotto1-29/+27
bit of optimization; ok tb@ asou@
2023-12-18cmac: use block_size rather than bltb1-35/+36
This is purely mechanical apart from a single line wrap.
2023-12-18Clean up EVP_PBE_CipherInit() a littletb1-25/+18
This is mostly stylistic cleanup, making the control flow a bit more obvious. There's one user-visible change: we no longer go out of our way to provide info about the unknown algorithm. The nid is enough. ok joshua jsing
2023-12-17c2sp: replace openssl 3.0 with 3.2 supporttb1-2/+2
2023-12-16ASN1_STRING_TABLE_get.3: grammar: have -> hastb1-2/+2
2023-12-16EVP_EncryptUpdate(): make block_size and block_mask consttb1-3/+3
suggested by millert
2023-12-16First cleanup pass over EVP_EncryptUpdate()tb1-36/+37
Use more sensible variable names in order to make the logic a bit easier to follow. The variables may be renamed in a later pass. Unindent a block that was squeezed too much to the right and make a few minor stylistic tweaks. ok jsing
2023-12-16Move EVP_PBE_find() next to the tablestb1-46/+46
There is no point in having EVP_PBE_CipherInit() between the table and the lookup functions (which it notably uses). No code change.
2023-12-16Remove OBJ_bsearch_() usage from PBEtb1-79/+175
Split the table of built-in password based encryption algorithms into two and use a linear scan over the table corresponding to the type specified in EVP_PBE_find()'s type argument. Use better variable names, make the API a bit safer and generally reduce the eye bleed in here. ok jsing
2023-12-16Using two different spellings of NULL in the same line is an achievementtb1-2/+2
2023-12-16Annotate incorrect value for ub_email_addresstb2-3/+8
The ub_email_address upper bound, 128, returned for NID_pkcs9_emailAddress, doesn't match the PKCS#9 specification where it is 255. This was adjusted in RFC 5280: The ASN.1 modules in Appendix A are unchanged from RFC 3280, except that ub-emailaddress-length was changed from 128 to 255 in order to align with PKCS #9 [RFC2985]. Nobody seems to have noticed so far, so leave it at an XXX and a BUGS entry for now. It also clearly has the wrong name. Another mystery is why the RFCs suffix some upper bounds with length, but not others. Also, OpenSSL chose to be inconsistent with that, because inconsistency is one of the few things this library is really good at.
2023-12-16Neuter the ASN1_STRING_TABLE modification APItb1-133/+16
This is complete nonsense that nothing's ever used except for a test by schwarze. It will be removed in the next major bump. What remains could be moved to a simple lookup table in security/xca... ok jsing
2023-12-16Remove call to ASN1_STRING_TABLE_cleanup()tb1-2/+1
In a few minutes, the string table will no longer have anything to clean up and ASN1_STRING_TABLE_cleanup() will push an error on the stack. So remove this pointless call in the still too complicated OPENSSL_cleanup(). ok jsing
2023-12-16asn1.h: mark a type and a bunch of macros for removaltb1-2/+3
ok jsing
2023-12-16Rename ASN1_STRING_TABLE_add manual to _gettb2-3/+3
2023-12-16Remove ASN1_STRING_TABLE_{add,cleanup}() documentationtb1-71/+14
The unused ASN1_STRING_TABLE extensibility API will be removed in the next major bump and the table itself will become immutable. Lightly adjust the remaining text. In particular, update the RFC reference, stop talking about defaults when nothing can be changed anymore, do not mention useless flags that you will no longer be able to set and move the description of the only remaining flag after the description of ASN1_STRING_TABLE_get(). The file will be renamed in a second step.
2023-12-16Implement and use a do_cipher() wrappertb1-59/+63
Instead of using five different idioms for eight callers of the do_cipher() method in EVP_{Decrypt,Encrypt}{Update,Final_ex}(), wrap the API insanity in an evp_cipher() function that calls do_cipher() as appropriate depending on the EVP_CIPH_FLAG_CUSTOM_CIPHER being set or not. This wrapper has the usual OpenSSL calling conventions. There is one complication in EVP_EncryptUpdate() in the case a previous call wrote only a partial buffer. In that case, the evp_cipher() call is made twice and the lengths have to be added. Add overflow checks and only set outl (the number of bytes written) to out on success. ok jsing
2023-12-15Remove the string_table testtb2-130/+1
If it wasn't for security/xca, all of the ASN1_STRING_TABLE API would hit the attic before long. API design by a trained professional... The table can at least be made immutable, which in turn makes this test entirely pointless.
2023-12-15Remove strings.h againtb1-2/+1
The portable compat shim doesn't provide it.
2023-12-15Remove EVP_PBE_cleanup() from EVP_cleanup()tb1-2/+1
It's a noop and will be removed in the next major bump. ok jsing
2023-12-15Move all the neutered PBE API to the bottom of the filetb1-17/+17
2023-12-15Remove unprotected global state from EVP_PBEtb1-76/+8
Nobody adds a custom password-based encryption algorithm, be it a PRF or one that can be an outermost AlgorithmIdentifier in CMS or its precursors. This makes the undocumented and unused EVP_PBE_alg_add{,_type}() always fail. They will be removed in the next major bump. Thus, we no longer need to maintain a global stack of PBE algorithms that one thread can happily modify while another one searches it. In subsequent steps we can then remove another rather pointless use of OBJ_bsearch_(). "Let's optimize the lookup in a table with two dozen entries using about as many glorious layers of obfuscating macros." ok jsing
2023-12-15Fix a return value confusion in chacha20_poly1305_cipher()tb1-2/+2
On overlong input, chacha20_poly1305_cipher() would return 0, which in EVP_CipherUpdate() and EVP_CipherFinal() signals success with no data written since EVP_CIPH_FLAG_CUSTOM_CIPHER is set. In order to signal an error, we need to return -1. Obviously. ok jsing
2023-12-15Disallow ciphers with EVP_CIPH_FLAG_CUSTOM_CIPHER in CMACtb1-1/+8
These are usually AEAD ciphers, for which CMAC makes little sense (if you need a MAC and all you have is an AEAD, you don't need CMAC, you can just use a zero length cipher text). Also, since the CMAC implementation only allows 64 and 128 bit block sizes, the AEADs would error out later anyway. The only family of ciphers this effectively excludes is AES key wrap, for which CMAC makes little sense. One notable side effect of doing this is that the EVP_Cipher() return value checks in the CMAC code magically become correct. EVP. What's not to love about it. ok jsing
2023-12-15Document EVP_Cipher() in codetb1-1/+13
EVP_Cipher() is an implementation detail of EVP_Cipher{Update,Final}(). Behavior depends on EVP_CIPH_FLAG_CUSTOM_CIPHER being set on ctx->cipher. If the flag is set, do_cipher() operates in update mode if in != NULL and in final mode if in == NULL. It returns the number of bytes written to out (which may be 0) or -1 on error. If the flag is not set, do_cipher() assumes properly aligned data and that padding is handled correctly by the caller. Most do_cipher() methods will silently produce garbage and succeed. Returns 1 on success, 0 on error. ok jsing
2023-12-15Move EVP_Cipher() from evp_lib.c to evp_enc.ctb2-9/+9
EVP_Cipher() is a dangerous thin wrapper of the do_cipher() method set on the EVP_CIPHER_CTX's cipher. It implements (part of) the update and final step of the EVP_Cipher* API. Its behavior is nuts and will be documented in a comment in a subsequent commit. schwarze has a manpage diff that will fix the incorrect documentation.
2023-12-15Clean up includestb1-6/+4
2023-12-15Neuter EVP_PKEY_asn1_add{0,_alias}()tb1-42/+10
Nothing uses these, so they will be removed in the next bump. For now make them always fail and remove the unprotected global state backing them. This makes EVP_PKEY_asn1_get{0,_count}() completely trivial and will allow some further cleanup in later steps. ok jsing
2023-12-15Hoist OBJ_sn2nid() over OBJ_ln2nid()tb1-17/+17
In all other places, the short name comes before the long name, so fix the only exception.
2023-12-15Coverity rightly points out that an unsigned int is always >= 0tb1-4/+4
2023-12-14OBJ_create: sorry Omar, aobj is a better name than optb1-5/+5
Done.
2023-12-14OBJ_create: use a nid variable to avoid nested function calltb1-3/+4
2023-12-14OBJ_create: malloc() -> calloc()tb1-2/+2