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.