Commit a49c9c9f authored by Ian Jackson's avatar Ian Jackson
Browse files

tor-netdoc: ns preamble: break out validity_time_range

We are going to want to use this when we implement verification for
network statuses from parse2.

Review with --color-moved.
parent 6b5f0fbd
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -85,7 +85,8 @@ use std::fmt::{self, Display};
use std::result::Result as StdResult;
use std::str::FromStr;
use std::sync::Arc;
use std::{net, result, time};
use std::time::{self, SystemTime};
use std::{net, result};
use tor_error::{Bug, HasKind, bad_api_usage, internal};
use tor_protover::Protocols;
use void::ResultVoidExt as _;
+1 −6
Original line number Diff line number Diff line
@@ -297,12 +297,7 @@ impl Consensus {
            siggroup,
            n_authorities: None,
        };
        let preamble = &unval.consensus.preamble;
        let lifetime = preamble.lifetime.clone();
        let delay = preamble.voting_delay.unwrap_or((0, 0));
        let dist_interval = time::Duration::from_secs(delay.1.into());
        let starting_time = *lifetime.valid_after - dist_interval;
        let timebound_range = starting_time..*lifetime.valid_until;
        let timebound_range = unval.consensus.preamble.validity_time_range();
        let timebound = TimerangeBound::new(unval, timebound_range);
        Ok((signed_str, remainder, timebound))
    }
+13 −0
Original line number Diff line number Diff line
@@ -161,3 +161,16 @@ pub struct NetworkStatusSignatures {
    /// `directory-signature`s
    pub directory_signature: ns_type!(Vec<Signature>, Vec<Signature>, Signature),
}

impl Preamble {
    /// Calculate the validity range (time interval) for this network status document
    pub fn validity_time_range(&self) -> std::ops::Range<SystemTime> {
        let preamble = self;
        let lifetime = preamble.lifetime.clone();
        let delay = preamble.voting_delay.unwrap_or((0, 0));
        let dist_interval = time::Duration::from_secs(delay.1.into());
        let starting_time = *lifetime.valid_after - dist_interval;
        let timebound_range = starting_time..*lifetime.valid_until;
        timebound_range
    }
}