From be9f0fd29a1e47fdaec01caf344e897ac42e048a Mon Sep 17 00:00:00 2001 From: nworbnhoj Date: Mon, 26 Jun 2023 12:35:20 +1000 Subject: [PATCH] implement tls RustlsOwnedTrustAnchor::subject() --- libs/tls/src/lib.rs | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/libs/tls/src/lib.rs b/libs/tls/src/lib.rs index fdbc45197..6e567b3dc 100644 --- a/libs/tls/src/lib.rs +++ b/libs/tls/src/lib.rs @@ -6,13 +6,14 @@ use rkyv::{ ser::{serializers::WriteSerializer, Serializer}, AlignedVec, Archive, Deserialize, Serialize, }; -use rustls::{Certificate, DistinguishedName, RootCertStore}; +use rustls::{Certificate, RootCertStore}; use std::cmp::min; use std::convert::{Into, TryFrom}; use std::fs::File; use std::io::{Error, ErrorKind, Read, Write}; use std::path::PathBuf; use x509_parser::prelude::{FromDer, X509Certificate}; +use x509_parser::der_parser::der::Tag; use xous_names::XousNames; /// PDDB Dict for tls trusted certificates keys @@ -41,6 +42,17 @@ pub fn from_subject_spki_name_constraints( } + pub fn subject(&self) -> String { + let der = self.subject.clone(); + let len = min(der.len(), 127); + let mut der = der[..len].to_owned(); + der.insert(0, len as u8); + der.insert(0, Tag::Sequence.0 as u8); + match x509_parser::x509::X509Name::from_der(&der) { + Ok((_, decoded)) => decoded.to_string(), + Err(e) => format!("der parse failed: {e}").to_string(), + } + }