From a8517d9707e5ef313d6f4d69b51d21251c82ea91 Mon Sep 17 00:00:00 2001 From: Robin Krahl Date: Sat, 19 May 2018 19:09:42 +0000 Subject: Initial commit --- nitrokey-sys/Cargo.toml | 16 ++++++++++++++++ nitrokey-sys/build.rs | 17 +++++++++++++++++ nitrokey-sys/src/lib.rs | 29 +++++++++++++++++++++++++++++ nitrokey-sys/wrapper.h | 2 ++ 4 files changed, 64 insertions(+) create mode 100644 nitrokey-sys/Cargo.toml create mode 100644 nitrokey-sys/build.rs create mode 100644 nitrokey-sys/src/lib.rs create mode 100644 nitrokey-sys/wrapper.h (limited to 'nitrokey-sys') diff --git a/nitrokey-sys/Cargo.toml b/nitrokey-sys/Cargo.toml new file mode 100644 index 0000000..e8ff489 --- /dev/null +++ b/nitrokey-sys/Cargo.toml @@ -0,0 +1,16 @@ +[package] +name = "nitrokey-sys" +version = "0.1.0" +authors = ["Robin Krahl "] +homepage = "https://code.ireas.org/nitrokey-rs/" +repository = "https://git.ireas.org/nitrokey-rs/" +description = "Bindings to libnitrokey for communication with Nitrokey devices" +categories = ["external-ffi-bindings"] +license = "MIT" +links = "nitrokey" +build = "build.rs" + +[dependencies] + +[build-dependencies] +bindgen = "0.26.3" diff --git a/nitrokey-sys/build.rs b/nitrokey-sys/build.rs new file mode 100644 index 0000000..7b3325c --- /dev/null +++ b/nitrokey-sys/build.rs @@ -0,0 +1,17 @@ +extern crate bindgen; + +use std::env; +use std::path::PathBuf; + +fn main() { + println!("cargo:rustc-link-lib=nitrokey"); + + let bindings = bindgen::Builder::default() + .header("wrapper.h") + .generate() + .expect("Unable to generate bindings"); + let out_path = PathBuf::from(env::var("OUT_DIR").unwrap()); + bindings + .write_to_file(out_path.join("bindings.rs")) + .expect("Could not write bindings"); +} diff --git a/nitrokey-sys/src/lib.rs b/nitrokey-sys/src/lib.rs new file mode 100644 index 0000000..0641e13 --- /dev/null +++ b/nitrokey-sys/src/lib.rs @@ -0,0 +1,29 @@ +#![allow(non_upper_case_globals)] +#![allow(non_camel_case_types)] +#![allow(non_snake_case)] + +include!(concat!(env!("OUT_DIR"), "/bindings.rs")); + +#[cfg(test)] +mod tests { + use super::*; + use std::ffi::CString; + + #[test] + fn login_auto() { + unsafe { + assert_eq!(0, NK_login_auto()); + } + } + + #[test] + fn login() { + unsafe { + // Unconnected + assert_eq!(0, NK_login(CString::new("S").unwrap().as_ptr())); + assert_eq!(0, NK_login(CString::new("P").unwrap().as_ptr())); + // Unsupported model + assert_eq!(0, NK_login(CString::new("T").unwrap().as_ptr())); + } + } +} diff --git a/nitrokey-sys/wrapper.h b/nitrokey-sys/wrapper.h new file mode 100644 index 0000000..3c8d7cf --- /dev/null +++ b/nitrokey-sys/wrapper.h @@ -0,0 +1,2 @@ +#include +#include -- cgit v1.2.3