1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
use crate::Sha256Digest;

pub use ::x509_cert::der;
pub use ::x509_cert::der::pem;
pub use ::x509_cert::Certificate;

use ::sha2::{Digest, Sha256};

pub fn x509_public_key_s256(certificate: &Certificate) -> Option<Sha256Digest> {
    let public_key_bytes = certificate
        .tbs_certificate
        .subject_public_key_info
        .subject_public_key
        .as_bytes()?;

    let mut hasher = Sha256::new();
    hasher.update(public_key_bytes);
    Some(hasher.finalize())
}