Skip to content

v0.3.0: VerifyStatus enum, l= tag, testable verification, CI#5

Merged
usiegj00 merged 2 commits intomainfrom
v0.3.0
Feb 28, 2026
Merged

v0.3.0: VerifyStatus enum, l= tag, testable verification, CI#5
usiegj00 merged 2 commits intomainfrom
v0.3.0

Conversation

@usiegj00
Copy link
Copy Markdown
Contributor

Summary

  • Replace Bool return + puts with VerifyStatus enum (Pass, Fail, BodyHashFail, KeyRevoked, Expired, NoSignature, NoKey, InvalidSig)
  • Add public_key parameter to verify/verify_all to bypass DNS for unit testing
  • Verification fixes: v=1 validation, c= body default, x= expiration, p= key revocation, l= body length, multiple signatures
  • Add body_length signing support for l= tag
  • 19 new verification specs (sign-then-verify, no DNS needed)
  • GitHub Actions CI on Crystal 1.19 + latest

Test plan

  • crystal spec — 29 examples, 0 failures
  • crystal build --no-codegen src/dkimvrfy.cr — type-checks
  • crystal build --no-codegen src/dkimsign.cr — type-checks
  • CI passes on GitHub Actions

Replace Bool return + puts error handling with VerifyStatus enum.
Add public_key parameter to bypass DNS for unit testing. Extract
verify_one for per-signature logic and verify_all for multi-sig.

Verification fixes: v=1 validation, c= body default to simple,
x= expiration, p= key revocation, l= body length truncation,
iterate all DKIM-Signature headers.

Signing: add body_length parameter for l= tag support.

19 new verification specs using sign-then-verify pattern.
Add GitHub Actions CI (Crystal 1.19 + latest).

Bump version to 0.3.0.
Fixes EVP_PKEY_size linker error on OpenSSL 3.x.
@usiegj00 usiegj00 merged commit 3df349b into main Feb 28, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant