summaryrefslogtreecommitdiffstats
path: root/ffi-macros
diff options
context:
space:
mode:
authorJustus Winter <justus@sequoia-pgp.org>2019-04-08 13:47:59 +0200
committerJustus Winter <justus@sequoia-pgp.org>2019-04-09 13:46:20 +0200
commit712dd46883c058f5afa21a1183eca1cba388b042 (patch)
tree2128e6b2e5573edc57ea3136b3cfe76d8dda9439 /ffi-macros
parent0ebbe8630b246d6ccdd2d57a27f210394a8ee54f (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.toml2
-rw-r--r--ffi-macros/src/lib.rs11
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.