Add lyng.legacy_digest module with LegacyDigest.sha1()
Provides a pure Kotlin/KMP SHA-1 implementation with no extra dependencies,
exposed as `LegacyDigest.sha1(data)` in the `lyng.legacy_digest` package.
The naming deliberately signals that SHA-1 is cryptographically broken:
the object name `LegacyDigest` and prominent doc-comment warnings steer
users away from security-sensitive use while still enabling interoperability
with legacy protocols and file formats that require SHA-1.
API:
import lyng.legacy_digest
val hex: String = LegacyDigest.sha1("some string") // UTF-8 input
val hex: String = LegacyDigest.sha1(someBuffer) // raw-byte input
Tests cover FIPS 180-4 known-answer vectors (empty, "abc", long message,
quick-brown-fox) at both the Kotlin and Lyng integration levels.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
1 parent
f145a90845
commit
69013392d3
4 files changed
+284
No files matched your search
@@ -0,0 +1,33 @@
|
||||
package lyng.legacy_digest
|
||||
|
||||
/*
|
||||
Legacy cryptographic digest functions.
|
||||
|
||||
⚠️ WARNING: The functions in this module use algorithms that are
|
||||
CRYPTOGRAPHICALLY BROKEN and must NOT be used for any security-sensitive
|
||||
purpose, including:
|
||||
- Password hashing
|
||||
- Digital signatures or MACs
|
||||
- Integrity verification against adversarial tampering
|
||||
|
||||
Use only for interoperability with legacy protocols, file formats, or
|
||||
external systems that require these specific hash values.
|
||||
|
||||
For secure hashing, use SHA-256 or better (not yet available in this stdlib).
|
||||
*/
|
||||
|
||||
extern object LegacyDigest {
|
||||
/*
|
||||
Compute the SHA-1 digest of `data` and return it as a lowercase hex string.
|
||||
|
||||
`data` may be a String (hashed as UTF-8) or a Buffer (hashed as raw bytes).
|
||||
|
||||
⚠️ SHA-1 is cryptographically broken. Use only for protocol compatibility.
|
||||
|
||||
Example:
|
||||
import lyng.legacy_digest
|
||||
val digest = LegacyDigest.sha1("hello world")
|
||||
// "2aae6c69a64d7c8b96eacbbe0ced5df20f3a8e89" (note: known SHA-1 of "hello world")
|
||||
*/
|
||||
extern fun sha1(data): String
|
||||
}
|
||||
Reference in new issue
Block a user