Struct sequoia_openpgp::parse::stream::DetachedVerifier

source ·
pub struct DetachedVerifier<'a, H: VerificationHelper> { /* private fields */ }
Expand description

Verifies a detached signature.

To create a DetachedVerifier, create a DetachedVerifierBuilder using Parse, and customize it to your needs.

See GoodChecksum for what it means for a signature to be considered valid. When the signature(s) are processed, VerificationHelper::check will be called with a MessageStructure containing exactly one layer, a signature group.

§Examples

use std::io::{self, Read};
use sequoia_openpgp as openpgp;
use openpgp::{KeyHandle, Cert, Result};
use openpgp::parse::{Parse, stream::*};
use sequoia_openpgp::policy::StandardPolicy;

let p = &StandardPolicy::new();

// This fetches keys and computes the validity of the verification.
struct Helper {};
impl VerificationHelper for Helper {
    fn get_certs(&mut self, _ids: &[KeyHandle]) -> Result<Vec<Cert>> {
        Ok(Vec::new()) // Feed the Certs to the verifier here...
    }
    fn check(&mut self, structure: MessageStructure) -> Result<()> {
        Ok(()) // Implement your verification policy here.
    }
}

let signature =
   b"-----BEGIN PGP SIGNATURE-----

     wnUEABYKACcFglt+z/EWoQSOjDP6RiYzeXbZeXgGnAw0jdgsGQmQBpwMNI3YLBkA
     AHmUAP9mpj2wV0/ekDuzxZrPQ0bnobFVaxZGg7YzdlksSOERrwEA6v6czXQjKcv2
     KOwGTamb+ajTLQ3YRG9lh+ZYIXynvwE=
     =IJ29
     -----END PGP SIGNATURE-----";

let data = b"Hello World!";
let h = Helper {};
let mut v = DetachedVerifierBuilder::from_bytes(&signature[..])?
    .with_policy(p, None, h)?;
v.verify_bytes(data)?;

Implementations§

source§

impl<'a, H: VerificationHelper> DetachedVerifier<'a, H>

source

pub fn verify_reader<R: Read + Send + Sync>(&mut self, reader: R) -> Result<()>

Verifies the given data.

source

pub fn verify_file<P: AsRef<Path>>(&mut self, path: P) -> Result<()>

Verifies the given data.

source

pub fn verify_bytes<B: AsRef<[u8]>>(&mut self, buf: B) -> Result<()>

Verifies the given data.

source

pub fn helper_ref(&self) -> &H

Returns a reference to the helper.

source

pub fn helper_mut(&mut self) -> &mut H

Returns a mutable reference to the helper.

source

pub fn into_helper(self) -> H

Recovers the helper.

Auto Trait Implementations§

§

impl<'a, H> !Freeze for DetachedVerifier<'a, H>

§

impl<'a, H> !RefUnwindSafe for DetachedVerifier<'a, H>

§

impl<'a, H> Send for DetachedVerifier<'a, H>
where H: Send,

§

impl<'a, H> Sync for DetachedVerifier<'a, H>
where H: Sync,

§

impl<'a, H> Unpin for DetachedVerifier<'a, H>
where H: Unpin,

§

impl<'a, H> !UnwindSafe for DetachedVerifier<'a, H>

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.