summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/rc4/rc4.c (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Further simplify the rc4 implementation.jsing2025-08-171-117/+45
| | | | | | | | | | | | | | | | The RC4_CHUNK related code is intended to process native word sized chunks if the input and output are naturally aligned. However, RC4_CHUNK is currently a mess of machine dependent defines. Replace this with uint64_t on all architectures - 64 bit architectures will be happy with this and on 32 bit architectures the compiler can decompose this into multiple 32 bit operations. Provide separate rc4_chunk() implementations for big and little endian, since not all architectures have a byte swap instruction that would make this a cheap conversion. Thanks to gkoehler@ and tb@ for testing on big endian. ok tb@
* Clean up parts of rc4.jsing2025-08-141-79/+40
| | | | | | | | | | | | Provide a static inline rc4_step() function that replaces the near identical RC4_STEP and RC4_LOOP macros. Simplify the processing loop and use for loops with small constants, which the compiler can unroll if it wants to do so. Inline the SK_LOOP macro in rc4_set_key_internal(), also using a small loop that the compiler will most likely unroll. ok tb@
* Mop up RC4_INDEX.jsing2025-01-271-25/+19
| | | | | | | | | | | | | The RC4_INDEX define switches between base pointer indexing and per-byte pointer increment. This supposedly made a huge difference to performance on x86 at some point, however compilers have improved somewhat since then. There is no change (or effectively no change) in generated assembly on a the majority of LLVM platforms and even when there is some change (e.g. aarch64), there is no noticable performance difference. Simplify the (still messy) macros/code and mop up RC4_INDEX. ok tb@
* Provide and use crypto_arch.h.jsing2024-08-111-1/+3
| | | | | | | | Provide a per architecture crypto_arch.h - this will be used in a similar manner to bn_arch.h and will allow for architecture specific #defines and static inline functions. Move the HAVE_AES_* and HAVE_RC4_* defines here. ok tb@
* Use static inline for rc4_set_key_internal().jsing2024-03-281-2/+2
|
* Hide symbols in RC4joshua2024-03-281-1/+3
| | | | ok jsing tb beck
* Use C functions for RC4 public API.jsing2024-03-281-5/+29
| | | | | | | | | | | | | | Rather than having public API switch between C and assembly, always use C functions as entry points, which then call an assembly implementation (if available). This makes it significantly easier to deal with symbol aliasing/namespaces and it also means we benefit from vulnerability prevention provided by the C compiler. Rename the assembly generated functions from RC4() to rc4_internal() and RC4_set_key() to rc4_set_key_internal(). Always include rc4.c and change it to use defines that are similar to those used in BN. ok beck@ joshua@ tb@
* Consolidate rc4 code.jsing2024-03-271-0/+283
| | | | Discussed with tb@
* Remove meat which either duplicates code found in apps/, or is only of valuemiod2014-04-221-193/+0
| | | | for 20th century historians, and can be put in the Attic.
* resolve conflictsdjm2008-09-061-1/+2
|
* merge 0.9.7b with local changes; crank majors for libssl/libcryptomarkus2003-05-121-2/+2
|
* OpenSSL 0.9.7 stable 2002 05 08 mergebeck2002-05-151-2/+2
|
* use %s with fprintfderaadt2000-07-071-1/+1
|
* OpenSSL 0.9.4 mergebeck1999-09-291-4/+2
|
* Import of SSLeay-0.9.0b with RSA and IDEA stubbed + OpenBSD buildryker1998-10-051-0/+194
functionality for shared libs. Note that routines such as sslv2_init and friends that use RSA will not work due to lack of RSA in this library. Needs documentation and help from ports for easy upgrade to full functionality where legally possible.