diff options
author | Justus Winter <justus@sequoia-pgp.org> | 2019-04-08 13:47:59 +0200 |
---|---|---|
committer | Justus Winter <justus@sequoia-pgp.org> | 2019-04-09 13:46:20 +0200 |
commit | 712dd46883c058f5afa21a1183eca1cba388b042 (patch) | |
tree | 2128e6b2e5573edc57ea3136b3cfe76d8dda9439 /ffi-macros | |
parent | 0ebbe8630b246d6ccdd2d57a27f210394a8ee54f (diff) |
ffi-macros: Use crate sha2 instead of nettle.
- We hash type names to create a compile-time-constant value for the
runtime type checks in the wrapper types. Use sha2 instead of
nettle, because the former is a pure-rust implementation, and
doesn't require nettle at runtime. This makes building easier
because we do not require nettle to be in the dynamic linker path
at compile time.
Diffstat (limited to 'ffi-macros')
-rw-r--r-- | ffi-macros/Cargo.toml | 2 | ||||
-rw-r--r-- | ffi-macros/src/lib.rs | 11 |
2 files changed, 6 insertions, 7 deletions
diff --git a/ffi-macros/Cargo.toml b/ffi-macros/Cargo.toml index 38e658a6..02e1349a 100644 --- a/ffi-macros/Cargo.toml +++ b/ffi-macros/Cargo.toml @@ -19,9 +19,9 @@ maintenance = { status = "actively-developed" } [dependencies] lazy_static = "1.0.0" -nettle = "5.0" proc-macro2 = "0.4" quote = "0.6" +sha2 = "0.8" [dependencies.syn] version = "0.15" diff --git a/ffi-macros/src/lib.rs b/ffi-macros/src/lib.rs index 4ebea637..112577c6 100644 --- a/ffi-macros/src/lib.rs +++ b/ffi-macros/src/lib.rs @@ -7,13 +7,12 @@ use std::io::Write; extern crate lazy_static; use lazy_static::lazy_static; -extern crate nettle; -use nettle::hash::Hash; extern crate syn; use syn::spanned::Spanned; extern crate quote; extern crate proc_macro; extern crate proc_macro2; +extern crate sha2; use proc_macro::TokenStream; use proc_macro2::TokenStream as TokenStream2; @@ -255,13 +254,13 @@ fn derive_functions() -> &'static HashMap<&'static str, DeriveFn> /// Produces a deterministic hash of the given identifier. fn hash_ident(i: &syn::Ident) -> u64 { - let mut hash = ::nettle::hash::Sha256::default(); + use sha2::{Sha256, Digest}; + let mut hash = Sha256::new(); write!(hash, "{}", i).unwrap(); - let mut buf = [0; 8]; - hash.digest(&mut buf); + let result = hash.result(); - buf.iter().fold(0, |acc, b| (acc << 8) + (*b as u64)) + result[..8].iter().fold(0, |acc, b| (acc << 8) + (*b as u64)) } /// Derives type and conversion functions. |