implement to_tls_certificate method

This commit is contained in:
yggverse 2024-11-29 16:08:18 +02:00
parent ba9a679303
commit 9f23e9e51d
3 changed files with 31 additions and 2 deletions

View File

@ -23,7 +23,7 @@ use crate::Profile;
use gtk::{
gdk::Texture,
gdk_pixbuf::Pixbuf,
gio::{Cancellable, SocketClientEvent, TlsCertificate},
gio::{Cancellable, SocketClientEvent},
glib::{
gformat, GString, Priority, Regex, RegexCompileFlags, RegexMatchFlags, Uri, UriFlags,
UriHideFlags,
@ -431,7 +431,7 @@ impl Page {
Some(cancellable.clone()),
// Search for user certificate match request
match self.profile.identity.gemini.match_scope(&self.navigation.request.widget.entry.text()) {
Some(identity) => match TlsCertificate::from_pem(&identity.pem) {
Some(identity) => match identity.to_tls_certificate() {
Ok(certificate) => Some(certificate),
Err(reason) => todo!("{reason}"),
},

View File

@ -1,4 +1,18 @@
mod error;
use error::Error;
use gtk::gio::TlsCertificate;
pub struct Identity {
pub pem: String,
// pub scope: String,
}
impl Identity {
pub fn to_tls_certificate(&self) -> Result<TlsCertificate, Error> {
match TlsCertificate::from_pem(&self.pem) {
Ok(certificate) => Ok(certificate),
Err(reason) => Err(Error::TlsCertificate(reason)),
}
}
}

View File

@ -0,0 +1,15 @@
use gtk::glib;
use std::fmt::{Display, Formatter, Result};
#[derive(Debug)]
pub enum Error {
TlsCertificate(glib::Error),
}
impl Display for Error {
fn fmt(&self, f: &mut Formatter) -> Result {
match self {
Self::TlsCertificate(e) => write!(f, "TLS certificate error: {e}"),
}
}
}