first commit

ober

04eb262af4957171e784d55c2505623f166be4e8

diff --git a/README.md b/README.md
new file mode 100644
index 0000000..0577660
--- /dev/null
+++ b/README.md
@@ -0,0 +1,49 @@
+# chez-crypto
+
+OpenSSL libcrypto bindings for Chez Scheme.
+
+Provides hash digests, HMAC, symmetric encryption, Ed25519 signatures, and scrypt KDF.
+
+## Requirements
+
+- Chez Scheme 10.x
+- OpenSSL 3.x (`libcrypto`)
+- GCC
+
+## Build & Test
+
+```bash
+make
+make test
+```
+
+## API
+
+### Random
+- `(random-bytes n)` → bytevector of n cryptographically random bytes
+- `(random-bytes! bv)` → fills bytevector in place
+
+### Digest (Hash)
+- `(md5 data)`, `(sha1 data)`, `(sha256 data)`, `(sha384 data)`, `(sha512 data)` → bytevector
+- `(digest algo data)` → bytevector (algo = "md5", "sha256", etc.)
+- `(digest-size algo)` → integer
+- Streaming: `make-digest-ctx`, `digest-init!`, `digest-update!`, `digest-final!`, `free-digest-ctx`
+
+### HMAC
+- `(hmac algo key data)` → bytevector
+- `(hmac-md5 key data)`, `(hmac-sha256 key data)`, etc.
+
+### Cipher (Symmetric Encryption)
+- `(encrypt algo key iv plaintext)` → bytevector
+- `(decrypt algo key iv ciphertext)` → bytevector
+- `(cipher-key-length algo)`, `(cipher-iv-length algo)`, `(cipher-block-size algo)`
+- Streaming: `make-cipher-ctx`, `encrypt-init!`/`update!`/`final!`, `decrypt-init!`/`update!`/`final!`
+
+### Ed25519
+- `(ed25519-keygen)` → (values private-key public-key)
+- `(ed25519-sign privkey message)` → signature bytevector
+- `(ed25519-verify pubkey message signature)` → #t/#f
+
+### KDF
+- `(scrypt password salt size [N r p])` → derived key bytevector
+# chez-crypto