Struct trust_dns::rr::rdata::dnskey::DNSKEY
[−]
[src]
pub struct DNSKEY { /* fields omitted */ }
RFC 4034, DNSSEC Resource Records, March 2005
2. The DNSKEY Resource Record
DNSSEC uses public key cryptography to sign and authenticate DNS
resource record sets (RRsets). The public keys are stored in DNSKEY
resource records and are used in the DNSSEC authentication process
described in [RFC4035]: A zone signs its authoritative RRsets by
using a private key and stores the corresponding public key in a
DNSKEY RR. A resolver can then use the public key to validate
signatures covering the RRsets in the zone, and thus to authenticate
them.
The DNSKEY RR is not intended as a record for storing arbitrary
public keys and MUST NOT be used to store certificates or public keys
that do not directly relate to the DNS infrastructure.
The Type value for the DNSKEY RR type is 48.
The DNSKEY RR is class independent.
The DNSKEY RR has no special TTL requirements.
2.1. DNSKEY RDATA Wire Format
The RDATA for a DNSKEY RR consists of a 2 octet Flags Field, a 1
octet Protocol Field, a 1 octet Algorithm Field, and the Public Key
Field.
1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Flags | Protocol | Algorithm |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
/ /
/ Public Key /
/ /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
2.1.5. Notes on DNSKEY RDATA Design
Although the Protocol Field always has value 3, it is retained for
backward compatibility with early versions of the KEY record.
Methods
impl DNSKEY
[src]
fn new(
zone_key: bool,
secure_entry_point: bool,
revoke: bool,
algorithm: Algorithm,
public_key: Vec<u8>
) -> DNSKEY
zone_key: bool,
secure_entry_point: bool,
revoke: bool,
algorithm: Algorithm,
public_key: Vec<u8>
) -> DNSKEY
Construct a new DNSKey RData
Arguments
zone_key
- this key is used to sign Zone resource recordssecure_entry_point
- this key is used to sign DNSKeys that sign the Zone recordsrevoke
- this key has been revokedalgorithm
- specifies the algorithm which this Key uses to sign recordspublic_key
- the public key material, in native endian, the emitter will perform any necessary conversion
Return
A new DNSKEY RData for use in a Resource Record
fn zone_key(&self) -> bool
RFC 4034, DNSSEC Resource Records, March 2005
2.1.1. The Flags Field
Bit 7 of the Flags field is the Zone Key flag. If bit 7 has value 1,
then the DNSKEY record holds a DNS zone key, and the DNSKEY RR's
owner name MUST be the name of a zone. If bit 7 has value 0, then
the DNSKEY record holds some other type of DNS public key and MUST
NOT be used to verify RRSIGs that cover RRsets.
Bits 0-6 and 8-14 are reserved: these bits MUST have value 0 upon
creation of the DNSKEY RR and MUST be ignored upon receipt.
fn secure_entry_point(&self) -> bool
RFC 4034, DNSSEC Resource Records, March 2005
2.1.1. The Flags Field
Bit 15 of the Flags field is the Secure Entry Point flag, described
in [RFC3757]. If bit 15 has value 1, then the DNSKEY record holds a
key intended for use as a secure entry point. This flag is only
intended to be a hint to zone signing or debugging software as to the
intended use of this DNSKEY record; validators MUST NOT alter their
behavior during the signature validation process in any way based on
the setting of this bit. This also means that a DNSKEY RR with the
SEP bit set would also need the Zone Key flag set in order to be able
to generate signatures legally. A DNSKEY RR with the SEP set and the
Zone Key flag not set MUST NOT be used to verify RRSIGs that cover
RRsets.
fn revoke(&self) -> bool
RFC 5011, Trust Anchor Update, September 2007
RFC 5011 Trust Anchor Update September 2007
7. IANA Considerations
The IANA has assigned a bit in the DNSKEY flags field (see Section 7
of [RFC4034]) for the REVOKE bit (8).
fn algorithm(&self) -> Algorithm
RFC 4034, DNSSEC Resource Records, March 2005
2.1.3. The Algorithm Field
The Algorithm field identifies the public key's cryptographic
algorithm and determines the format of the Public Key field. A list
of DNSSEC algorithm types can be found in Appendix A.1
fn public_key(&self) -> &[u8]
RFC 4034, DNSSEC Resource Records, March 2005
2.1.4. The Public Key Field
The Public Key Field holds the public key material. The format
depends on the algorithm of the key being stored and is described in
separate documents.
fn to_digest(
&self,
name: &Name,
digest_type: DigestType
) -> DnsSecResult<DigestBytes>
&self,
name: &Name,
digest_type: DigestType
) -> DnsSecResult<DigestBytes>
Creates a message digest for this DNSKEY record.
5.1.4. The Digest Field
The DS record refers to a DNSKEY RR by including a digest of that
DNSKEY RR.
The digest is calculated by concatenating the canonical form of the
fully qualified owner name of the DNSKEY RR with the DNSKEY RDATA,
and then applying the digest algorithm.
digest = digest_algorithm( DNSKEY owner name | DNSKEY RDATA);
"|" denotes concatenation
DNSKEY RDATA = Flags | Protocol | Algorithm | Public Key.
The size of the digest may vary depending on the digest algorithm and
DNSKEY RR size. As of the time of this writing, the only defined
digest algorithm is SHA-1, which produces a 20 octet digest.
Arguments
name
- the label of of the DNSKEY record.digest_type
- theDigestType
with which to create the message digest.
Trait Implementations
impl Verifier for DNSKEY
[src]
fn algorithm(&self) -> Algorithm
Return the algorithm which this Verifier covers
fn key<'k>(&'k self) -> DnsSecResult<PublicKeyEnum<'k>>
Return the public key associated with this verifier
fn verify(&self, hash: &[u8], signature: &[u8]) -> DnsSecResult<()>
Verifies the hash matches the signature with the current key
. Read more
fn verify_message(
&self,
message: &Message,
signature: &[u8],
sig0: &SIG
) -> DnsSecResult<()>
&self,
message: &Message,
signature: &[u8],
sig0: &SIG
) -> DnsSecResult<()>
Verifies a message with the against the given signature, i.e. SIG0 Read more
fn verify_rrsig(
&self,
name: &Name,
dns_class: DNSClass,
sig: &SIG,
records: &[Record]
) -> DnsSecResult<()>
&self,
name: &Name,
dns_class: DNSClass,
sig: &SIG,
records: &[Record]
) -> DnsSecResult<()>
Verifies an RRSig with the associated key, e.g. DNSKEY Read more
impl Debug for DNSKEY
[src]
impl PartialEq for DNSKEY
[src]
fn eq(&self, __arg_0: &DNSKEY) -> bool
This method tests for self
and other
values to be equal, and is used by ==
. Read more
fn ne(&self, __arg_0: &DNSKEY) -> bool
This method tests for !=
.
impl Eq for DNSKEY
[src]
impl Hash for DNSKEY
[src]
fn hash<__H: Hasher>(&self, __arg_0: &mut __H)
Feeds this value into the given [Hasher
]. Read more
fn hash_slice<H>(data: &[Self], state: &mut H) where
H: Hasher,
1.3.0
H: Hasher,
Feeds a slice of this type into the given [Hasher
]. Read more
impl Clone for DNSKEY
[src]
fn clone(&self) -> DNSKEY
Returns a copy of the value. Read more
fn clone_from(&mut self, source: &Self)
1.0.0
Performs copy-assignment from source
. Read more