oxen-core/src/crypto
Jason Rhinelander 6aa9db9538
Overhaul and fix crypto::{public_key,ec_point,etc.} types
- Remove implicit `operator bool` from ec_point/public_key/etc. which
  was causing all sorts of implicit conversion mess and bugs.
- Change ec_point/public_key/etc. to use a `std::array<unsigned char,
  32>` (via a base type) rather than a C-array of char that has to be
  reinterpret_cast<>'ed all over the place.
- Add methods to ec_point/public_key/etc. that make it work more like a
  container of bytes (`.data()`, `.size()`, `operator[]`, `begin()`,
  `end()`).
- Make a generic `crypto::null<T>` that is a constexpr all-0 `T`, rather
  than the mishmash `crypto::null_hash`, crypto::null_pkey,
  crypto:#️⃣:null(), and so on.
- Replace three metric tons of `crypto::hash blahblah =
  crypto::null_hash;` with the much simpler `crypto::hash blahblah{};`,
  because there's no need to make a copy of a null hash in all these
  cases.  (Likewise for a few other null_whatevers).
- Remove a whole bunch of `if (blahblah == crypto::null_hash)` and `if
  (blahblah != crypto::null_hash)` with the more concise `if
  (!blahblah)` and `if (blahblah)` (which are fine via the newly
  *explicit* bool conversion operators).
- `crypto::signature` becomes a 64-byte container (as above) but with
  `c()` and `r()` to get the c() and r() data pointers.  (Previously
  `.c` and `.r` were `ec_scalar`s).
- Delete with great prejudice CRYPTO_MAKE_COMPARABLE and
  CRYPTO_MAKE_HASHABLE and all the other utter trash in
  `crypto/generic-ops.h`.
- De-inline functions in very common crypto/*.h files so that they don't
  have to get compiled 300 times.
- Remove the disgusting include-a-C-header-inside-a-C++-namespace
  garbage from some crypto headers trying to be both a C and *different*
  C++ header at once.
- Remove the toxic, disgusting, shameful `operator&` on ec_scalar, etc.
  that replace `&x` with `reinterpret_cast x into an unsigned char*`.
  This was pure toxic waste.
- changed some `<<` outputs to fmt
- Random other small changes encountered while fixing everything that
  cascaded out of the above changes.
2022-10-17 22:20:54 -03:00
..
crypto_ops_builder Remove unused sodium bits 2019-11-27 14:07:52 -04:00
CMakeLists.txt Overhaul and fix crypto::{public_key,ec_point,etc.} types 2022-10-17 22:20:54 -03:00
aesb.c Move epee includes under "epee/..." 2020-10-24 12:46:27 -03:00
base.h Overhaul and fix crypto::{public_key,ec_point,etc.} types 2022-10-17 22:20:54 -03:00
blake256.c Move epee includes under "epee/..." 2020-10-24 12:46:27 -03:00
blake256.h Update monero copyright to 2019 pre-emptively to make merge simpler 2019-04-12 14:36:43 +10:00
c_threads.h RandomX integration 2019-09-25 21:29:42 +01:00
chacha.c Move epee includes under "epee/..." 2020-10-24 12:46:27 -03:00
chacha.cpp Overhaul and fix crypto::{public_key,ec_point,etc.} types 2022-10-17 22:20:54 -03:00
chacha.h Overhaul and fix crypto::{public_key,ec_point,etc.} types 2022-10-17 22:20:54 -03:00
cn_heavy_hash.hpp executable names changed 2021-01-04 14:19:42 +11:00
cn_heavy_hash_hard_arm.cpp Lots of build hacks for iOS 2020-11-04 15:06:59 -04:00
cn_heavy_hash_hard_intel.cpp Set -maes in CMake rather than source file 2020-10-14 14:26:16 -03:00
cn_heavy_hash_soft.cpp AES redux for cn-pico & cn-heavy 2020-07-09 21:30:34 -03:00
cn_monero_slow_hash.c Overhaul and fix crypto::{public_key,ec_point,etc.} types 2022-10-17 22:20:54 -03:00
cn_turtle_hash-amd64.inl Overhaul and fix crypto::{public_key,ec_point,etc.} types 2022-10-17 22:20:54 -03:00
cn_turtle_hash-arm.inl Overhaul and fix crypto::{public_key,ec_point,etc.} types 2022-10-17 22:20:54 -03:00
cn_turtle_hash-portable.inl Overhaul and fix crypto::{public_key,ec_point,etc.} types 2022-10-17 22:20:54 -03:00
cn_turtle_hash.c Add missing header 2022-07-22 14:18:24 -03:00
crypto-ops-data.c Update monero copyright to 2019 pre-emptively to make merge simpler 2019-04-12 14:36:43 +10:00
crypto-ops.c Move epee includes under "epee/..." 2020-10-24 12:46:27 -03:00
crypto-ops.h CLSAG signatures 2020-09-16 20:41:39 -03:00
crypto.cpp Overhaul and fix crypto::{public_key,ec_point,etc.} types 2022-10-17 22:20:54 -03:00
crypto.h Overhaul and fix crypto::{public_key,ec_point,etc.} types 2022-10-17 22:20:54 -03:00
groestl.c crypto: fixed groestl on big-endian platforms 2018-10-25 02:06:23 +00:00
groestl.h Update monero copyright to 2019 pre-emptively to make merge simpler 2019-04-12 14:36:43 +10:00
groestl_tables.h Move epee includes under "epee/..." 2020-10-24 12:46:27 -03:00
hash-extra-blake.c Update monero copyright to 2019 pre-emptively to make merge simpler 2019-04-12 14:36:43 +10:00
hash-extra-groestl.c Update monero copyright to 2019 pre-emptively to make merge simpler 2019-04-12 14:36:43 +10:00
hash-extra-jh.c Overhaul and fix crypto::{public_key,ec_point,etc.} types 2022-10-17 22:20:54 -03:00
hash-extra-skein.c Overhaul and fix crypto::{public_key,ec_point,etc.} types 2022-10-17 22:20:54 -03:00
hash-ops.h Overhaul and fix crypto::{public_key,ec_point,etc.} types 2022-10-17 22:20:54 -03:00
hash.c Overhaul and fix crypto::{public_key,ec_point,etc.} types 2022-10-17 22:20:54 -03:00
hash.cpp Overhaul and fix crypto::{public_key,ec_point,etc.} types 2022-10-17 22:20:54 -03:00
hash.h Overhaul and fix crypto::{public_key,ec_point,etc.} types 2022-10-17 22:20:54 -03:00
hmac-keccak.c Move epee includes under "epee/..." 2020-10-24 12:46:27 -03:00
hmac-keccak.h crypto: hmac_keccak added 2019-03-20 21:11:01 +01:00
initializer.h Update monero copyright to 2019 pre-emptively to make merge simpler 2019-04-12 14:36:43 +10:00
jh.c Disable uninitialized value warning in jh.c 2020-12-08 22:01:48 -04:00
jh.h Fix conflicting jh_hash/skein_hash definitions 2020-06-14 23:55:48 -03:00
keccak.c 128 bit optimizations 2022-06-19 12:36:40 -03:00
keccak.h Incremental Keccak API added 2018-08-15 18:20:22 +02:00
oaes_lib_expand.c Rename oaes_lib to oaes_lib_expand 2022-07-21 21:16:17 -03:00
oaes_lib_expand.h Rename oaes_lib to oaes_lib_expand 2022-07-21 21:16:17 -03:00
random.c Overhaul and fix crypto::{public_key,ec_point,etc.} types 2022-10-17 22:20:54 -03:00
random.h wallet: add --extra-entropy command line flag 2019-08-22 11:12:57 +00:00
rx-slow-hash.c Overhaul and fix crypto::{public_key,ec_point,etc.} types 2022-10-17 22:20:54 -03:00
skein.c Fix conflicting jh_hash/skein_hash definitions 2020-06-14 23:55:48 -03:00
skein.h Fix conflicting jh_hash/skein_hash definitions 2020-06-14 23:55:48 -03:00
skein_port.h Move epee includes under "epee/..." 2020-10-24 12:46:27 -03:00
tree-hash.c Overhaul and fix crypto::{public_key,ec_point,etc.} types 2022-10-17 22:20:54 -03:00
variant2_int_sqrt.h Cryptonight variant 2 2018-09-09 20:43:01 +02:00