3
4
Fork
You've already forked validns
5

feat: render RRSIG rdata in verbose output #134

Merged
jelu merged 1 commit from tobez/validns:feat-rrsig-human into main 2026年07月06日 10:53:03 +02:00
Collaborator
Copy link

Verbose output (-v) printed RRSIG records with no record data at all: rrsig_human() was a stub returning NULL, so lines like "example.sec. IN 300 RRSIG" gave no hint of what the signature covered or when it expired.

Implement rrsig_human() to render the complete RFC 4034 presentation form: type covered, algorithm, labels, original TTL, expiration/inception timestamps, key tag, signer name, and the full base64 signature. The output round-trips: fed back through the parser it produces the identical wire format, and a test verifies this by splicing rendered RRSIG lines back into a signed zone and re-validating all signatures. Timestamps are computed arithmetically in UTC — like the parsing side — so they are correct regardless of local timezone and unaffected by 32-bit time_t past 2038. ECDSA signatures, stored internally in DER form, are converted back to the raw r||s pair for rendering; dedicated tests pin the exact output for P-256, P-384, RSA, and post-2038 timestamps, exercised on i386 among the other platforms.

This is the first of a series: several other rr_human implementations render placeholders or partial rdata today (DNSKEY, CERT, LOC, NSEC3, and others), and I plan to bring them all to the same round-trip standard.

Verbose output (-v) printed RRSIG records with no record data at all: rrsig_human() was a stub returning NULL, so lines like "example.sec. IN 300 RRSIG" gave no hint of what the signature covered or when it expired. Implement rrsig_human() to render the complete RFC 4034 presentation form: type covered, algorithm, labels, original TTL, expiration/inception timestamps, key tag, signer name, and the full base64 signature. The output round-trips: fed back through the parser it produces the identical wire format, and a test verifies this by splicing rendered RRSIG lines back into a signed zone and re-validating all signatures. Timestamps are computed arithmetically in UTC — like the parsing side — so they are correct regardless of local timezone and unaffected by 32-bit time_t past 2038. ECDSA signatures, stored internally in DER form, are converted back to the raw r||s pair for rendering; dedicated tests pin the exact output for P-256, P-384, RSA, and post-2038 timestamps, exercised on i386 among the other platforms. This is the first of a series: several other rr_human implementations render placeholders or partial rdata today (DNSKEY, CERT, LOC, NSEC3, and others), and I plan to bring them all to the same round-trip standard.
feat: render RRSIG rdata in verbose output
Some checks failed
test / centos (pull_request) Failing after 0s
test / ubuntu (pull_request) Failing after 0s
test / scan-build (pull_request) Failing after 0s
test / debian (pull_request) Failing after 0s
builds.sr.ht/freebsd Job completed
builds.sr.ht/openbsd Job completed
78bff66e51
Owner
Copy link

@tobez need rebase

@tobez need rebase
tobez force-pushed feat-rrsig-human from 78bff66e51
Some checks failed
test / centos (pull_request) Failing after 0s
test / ubuntu (pull_request) Failing after 0s
test / scan-build (pull_request) Failing after 0s
test / debian (pull_request) Failing after 0s
builds.sr.ht/freebsd Job completed
builds.sr.ht/openbsd Job completed
to e52a8d82e7
All checks were successful
builds.sr.ht/freebsd Job completed
builds.sr.ht/openbsd Job completed
test / debian (pull_request) Successful in 30s
test / ubuntu (pull_request) Successful in 31s
test / centos (pull_request) Successful in 47s
test / scan-build (pull_request) Successful in 1m6s
2026年07月06日 10:43:48 +02:00
Compare
Owner
Copy link

#build

#build
Sign in to join this conversation.
No reviewers
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
DNS-OARC/validns!134
Reference in a new issue
DNS-OARC/validns
No description provided.
Delete branch "tobez/validns:feat-rrsig-human"

Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?