MCPcopy Create free account
hub / github.com/DNSCrypt/encrypted-dns-server / new

Method new

src/dnscrypt_certs.rs:189–216  ·  view source on GitHub ↗
(provider_kp: &SignKeyPair, resolver_kp: &CryptKeyPair, ts_start: u32)

Source from the content-addressed store, hash-verified

187
188impl DNSCryptCert {
189 pub fn new(provider_kp: &SignKeyPair, resolver_kp: &CryptKeyPair, ts_start: u32) -> Self {
190 let ts_end = ts_start.saturating_add(DNSCRYPT_CERTS_TTL);
191
192 let mut dnscrypt_cert = DNSCryptCert::default();
193
194 let dnscrypt_cert_inner = &mut dnscrypt_cert.inner;
195 dnscrypt_cert_inner
196 .resolver_pk
197 .copy_from_slice(resolver_kp.pk.as_bytes());
198 dnscrypt_cert_inner
199 .client_magic
200 .copy_from_slice(&dnscrypt_cert_inner.resolver_pk[..8]);
201 BigEndian::write_u32(&mut dnscrypt_cert_inner.serial, 1);
202 BigEndian::write_u32(&mut dnscrypt_cert_inner.ts_start, ts_start);
203 BigEndian::write_u32(&mut dnscrypt_cert_inner.ts_end, ts_end);
204
205 BigEndian::write_u32(&mut dnscrypt_cert.cert_magic, 0x44_4e_53_43);
206 BigEndian::write_u16(&mut dnscrypt_cert.es_version, 2);
207 BigEndian::write_u16(&mut dnscrypt_cert.minor_version, 0);
208
209 dnscrypt_cert.signature.copy_from_slice(
210 provider_kp
211 .sk
212 .sign(dnscrypt_cert_inner.as_bytes())
213 .as_bytes(),
214 );
215 dnscrypt_cert
216 }
217
218 pub fn as_bytes(&self) -> &[u8] {
219 unsafe { slice::from_raw_parts(self as *const _ as *const u8, mem::size_of_val(self)) }

Callers

nothing calls this directly

Calls 8

nowFunction · 0.85
newFunction · 0.85
signMethod · 0.80
ts_startMethod · 0.80
dnscrypt_certMethod · 0.80
resolver_kpMethod · 0.80
derive_pqMethod · 0.80
as_bytesMethod · 0.45

Tested by

no test coverage detected