From 59950bcad6829d656fa58b1e1c10330535d2fef3 Mon Sep 17 00:00:00 2001 From: Yawning Angel Date: Fri, 17 Nov 2023 19:18:45 +0900 Subject: [PATCH] core/crypto: Exile keccak, md5 and sha1 to legacy In an perfect world these would just be removed, but the world is imperfect, and people are forced to interact/interface with things that are broken. --- core/crypto/README.md | 6 +++--- core/crypto/legacy/README.md | 10 ++++++++++ core/crypto/{ => legacy}/keccak/keccak.odin | 2 +- core/crypto/{ => legacy}/md5/md5.odin | 0 core/crypto/{ => legacy}/sha1/sha1.odin | 0 examples/all/all_main.odin | 6 +++--- examples/all/all_vendor.odin | 6 +++--- tests/core/crypto/test_core_crypto.odin | 6 +++--- tests/vendor/botan/test_vendor_botan.odin | 6 +++--- vendor/botan/README.md | 6 +++--- vendor/botan/legacy/README.md | 10 ++++++++++ vendor/botan/{ => legacy}/keccak/keccak.odin | 2 +- vendor/botan/{ => legacy}/md5/md5.odin | 2 +- vendor/botan/{ => legacy}/sha1/sha1.odin | 2 +- 14 files changed, 42 insertions(+), 22 deletions(-) create mode 100644 core/crypto/legacy/README.md rename core/crypto/{ => legacy}/keccak/keccak.odin (99%) rename core/crypto/{ => legacy}/md5/md5.odin (100%) rename core/crypto/{ => legacy}/sha1/sha1.odin (100%) create mode 100644 vendor/botan/legacy/README.md rename vendor/botan/{ => legacy}/keccak/keccak.odin (99%) rename vendor/botan/{ => legacy}/md5/md5.odin (98%) rename vendor/botan/{ => legacy}/sha1/sha1.odin (98%) diff --git a/core/crypto/README.md b/core/crypto/README.md index 69f76b719..35ed9ca70 100644 --- a/core/crypto/README.md +++ b/core/crypto/README.md @@ -10,13 +10,13 @@ Please see the chart below for the options. |:-------------------------------------------------------------------------------------------------------------|:-----------------| | [BLAKE2B](https://datatracker.ietf.org/doc/html/rfc7693) | ✔️ | | [BLAKE2S](https://datatracker.ietf.org/doc/html/rfc7693) | ✔️ | -| [Keccak](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.202.pdf) | ✔️ | -| [MD5](https://datatracker.ietf.org/doc/html/rfc1321) | ✔️ | -| [SHA-1](https://datatracker.ietf.org/doc/html/rfc3174) | ✔️ | | [SHA-2](https://csrc.nist.gov/csrc/media/publications/fips/180/2/archive/2002-08-01/documents/fips180-2.pdf) | ✔️ | | [SHA-3](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.202.pdf) | ✔️ | | [SHAKE](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.202.pdf) | ✔️ | | [SM3](https://datatracker.ietf.org/doc/html/draft-sca-cfrg-sm3-02) | ✔️ | +| legacy/[Keccak](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.202.pdf) | ✔️ | +| legacy/[MD5](https://datatracker.ietf.org/doc/html/rfc1321) | ✔️ | +| legacy/[SHA-1](https://datatracker.ietf.org/doc/html/rfc3174) | ✔️ | #### High level API Each hash algorithm contains a procedure group named `hash`, or if the algorithm provides more than one digest size `hash_`\*. diff --git a/core/crypto/legacy/README.md b/core/crypto/legacy/README.md new file mode 100644 index 000000000..e1ba6f54b --- /dev/null +++ b/core/crypto/legacy/README.md @@ -0,0 +1,10 @@ +# crypto/legacy + +These are algorithms that are shipped solely for the purpose of +interoperability with legacy systems. The use of these packages in +any other capacity is discouraged, especially those that are known +to be broken. + +- keccak - The draft version of the algorithm that became SHA-3 +- MD5 - Broken (https://eprint.iacr.org/2005/075) +- SHA-1 - Broken (https://eprint.iacr.org/2017/190) diff --git a/core/crypto/keccak/keccak.odin b/core/crypto/legacy/keccak/keccak.odin similarity index 99% rename from core/crypto/keccak/keccak.odin rename to core/crypto/legacy/keccak/keccak.odin index a41befd6d..09db853a6 100644 --- a/core/crypto/keccak/keccak.odin +++ b/core/crypto/legacy/keccak/keccak.odin @@ -14,7 +14,7 @@ package keccak import "core:io" import "core:os" -import "../_sha3" +import "../../_sha3" /* High level API diff --git a/core/crypto/md5/md5.odin b/core/crypto/legacy/md5/md5.odin similarity index 100% rename from core/crypto/md5/md5.odin rename to core/crypto/legacy/md5/md5.odin diff --git a/core/crypto/sha1/sha1.odin b/core/crypto/legacy/sha1/sha1.odin similarity index 100% rename from core/crypto/sha1/sha1.odin rename to core/crypto/legacy/sha1/sha1.odin diff --git a/examples/all/all_main.odin b/examples/all/all_main.odin index bdbaf0e6c..0872e0550 100644 --- a/examples/all/all_main.odin +++ b/examples/all/all_main.odin @@ -27,10 +27,10 @@ import blake2b "core:crypto/blake2b" import blake2s "core:crypto/blake2s" import chacha20 "core:crypto/chacha20" import chacha20poly1305 "core:crypto/chacha20poly1305" -import keccak "core:crypto/keccak" -import md5 "core:crypto/md5" +import keccak "core:crypto/legacy/keccak" +import md5 "core:crypto/legacy/md5" +import sha1 "core:crypto/legacy/sha1" import poly1305 "core:crypto/poly1305" -import sha1 "core:crypto/sha1" import sha2 "core:crypto/sha2" import sha3 "core:crypto/sha3" import shake "core:crypto/shake" diff --git a/examples/all/all_vendor.odin b/examples/all/all_vendor.odin index 075276c11..0e92c94bb 100644 --- a/examples/all/all_vendor.odin +++ b/examples/all/all_vendor.odin @@ -2,9 +2,9 @@ package all import botan_bindings "vendor:botan/bindings" import botan_blake2b "vendor:botan/blake2b" -import keccak "vendor:botan/keccak" -import md5 "vendor:botan/md5" -import sha1 "vendor:botan/sha1" +import keccak "vendor:botan/legacy/keccak" +import md5 "vendor:botan/legacy/md5" +import sha1 "vendor:botan/legacy/sha1" import sha2 "vendor:botan/sha2" import sha3 "vendor:botan/sha3" import shake "vendor:botan/shake" diff --git a/tests/core/crypto/test_core_crypto.odin b/tests/core/crypto/test_core_crypto.odin index 508af63ad..0e347a702 100644 --- a/tests/core/crypto/test_core_crypto.odin +++ b/tests/core/crypto/test_core_crypto.odin @@ -16,16 +16,16 @@ import "core:testing" import "core:fmt" import "core:strings" -import "core:crypto/md5" -import "core:crypto/sha1" import "core:crypto/sha2" import "core:crypto/sha3" -import "core:crypto/keccak" import "core:crypto/shake" import "core:crypto/blake2b" import "core:crypto/blake2s" import "core:crypto/sm3" import "core:crypto/siphash" +import "core:crypto/legacy/keccak" +import "core:crypto/legacy/md5" +import "core:crypto/legacy/sha1" import "core:os" TEST_count := 0 diff --git a/tests/vendor/botan/test_vendor_botan.odin b/tests/vendor/botan/test_vendor_botan.odin index 661f79790..465589407 100644 --- a/tests/vendor/botan/test_vendor_botan.odin +++ b/tests/vendor/botan/test_vendor_botan.odin @@ -17,11 +17,11 @@ import "core:fmt" import "core:os" import "core:strings" -import "vendor:botan/md5" -import "vendor:botan/sha1" +import "vendor:botan/legacy/md5" +import "vendor:botan/legacy/sha1" import "vendor:botan/sha2" import "vendor:botan/sha3" -import "vendor:botan/keccak" +import "vendor:botan/legacy/keccak" import "vendor:botan/shake" import "vendor:botan/blake2b" import "vendor:botan/sm3" diff --git a/vendor/botan/README.md b/vendor/botan/README.md index 890949158..8dc4e0575 100644 --- a/vendor/botan/README.md +++ b/vendor/botan/README.md @@ -9,13 +9,13 @@ Wrappers for hashing algorithms have been added to match the API within the Odin | Algorithm | | |:-------------------------------------------------------------------------------------------------------------|:-----------------| | [BLAKE2B](https://datatracker.ietf.org/doc/html/rfc7693) | ✔️ | -| [Keccak](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.202.pdf) | ✔️ | -| [MD5](https://datatracker.ietf.org/doc/html/rfc1321) | ✔️ | -| [SHA-1](https://datatracker.ietf.org/doc/html/rfc3174) | ✔️ | | [SHA-2](https://csrc.nist.gov/csrc/media/publications/fips/180/2/archive/2002-08-01/documents/fips180-2.pdf) | ✔️ | | [SHA-3](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.202.pdf) | ✔️ | | [SHAKE](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.202.pdf) | ✔️ | | [SM3](https://datatracker.ietf.org/doc/html/draft-sca-cfrg-sm3-02) | ✔️ | +| legacy/[Keccak](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.202.pdf) | ✔️ | +| legacy/[MD5](https://datatracker.ietf.org/doc/html/rfc1321) | ✔️ | +| legacy/[SHA-1](https://datatracker.ietf.org/doc/html/rfc3174) | ✔️ | #### High level API Each hash algorithm contains a procedure group named `hash`, or if the algorithm provides more than one digest size `hash_`. diff --git a/vendor/botan/legacy/README.md b/vendor/botan/legacy/README.md new file mode 100644 index 000000000..e1ba6f54b --- /dev/null +++ b/vendor/botan/legacy/README.md @@ -0,0 +1,10 @@ +# crypto/legacy + +These are algorithms that are shipped solely for the purpose of +interoperability with legacy systems. The use of these packages in +any other capacity is discouraged, especially those that are known +to be broken. + +- keccak - The draft version of the algorithm that became SHA-3 +- MD5 - Broken (https://eprint.iacr.org/2005/075) +- SHA-1 - Broken (https://eprint.iacr.org/2017/190) diff --git a/vendor/botan/keccak/keccak.odin b/vendor/botan/legacy/keccak/keccak.odin similarity index 99% rename from vendor/botan/keccak/keccak.odin rename to vendor/botan/legacy/keccak/keccak.odin index 1d08f427d..02f05378c 100644 --- a/vendor/botan/keccak/keccak.odin +++ b/vendor/botan/legacy/keccak/keccak.odin @@ -14,7 +14,7 @@ package vendor_keccak import "core:os" import "core:io" -import botan "../bindings" +import botan "../../bindings" /* High level API diff --git a/vendor/botan/md5/md5.odin b/vendor/botan/legacy/md5/md5.odin similarity index 98% rename from vendor/botan/md5/md5.odin rename to vendor/botan/legacy/md5/md5.odin index c2ed7c45c..7071a9234 100644 --- a/vendor/botan/md5/md5.odin +++ b/vendor/botan/legacy/md5/md5.odin @@ -14,7 +14,7 @@ package vendor_md5 import "core:os" import "core:io" -import botan "../bindings" +import botan "../../bindings" /* High level API diff --git a/vendor/botan/sha1/sha1.odin b/vendor/botan/legacy/sha1/sha1.odin similarity index 98% rename from vendor/botan/sha1/sha1.odin rename to vendor/botan/legacy/sha1/sha1.odin index 929f4c0be..0fc79d6cc 100644 --- a/vendor/botan/sha1/sha1.odin +++ b/vendor/botan/legacy/sha1/sha1.odin @@ -14,7 +14,7 @@ package vendor_sha1 import "core:os" import "core:io" -import botan "../bindings" +import botan "../../bindings" /* High level API