From 9059e42614d8572a4fa53a4bd07f450000e451af Mon Sep 17 00:00:00 2001 From: Robin Krahl Date: Sun, 20 May 2018 10:51:45 +0200 Subject: Initial commit after move from nitrokey-rs Previously, this crate has been part of the nitrokey-rs repository at https://git.ireas.org/nitrokey-rs. --- Cargo.toml | 17 +++++++++++++++++ build.rs | 17 +++++++++++++++++ src/lib.rs | 29 +++++++++++++++++++++++++++++ wrapper.h | 2 ++ 4 files changed, 65 insertions(+) create mode 100644 Cargo.toml create mode 100644 build.rs create mode 100644 src/lib.rs create mode 100644 wrapper.h diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..3ce5d21 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,17 @@ +[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] +libc = "0.2" + +[build-dependencies] +bindgen = "0.26.3" diff --git a/build.rs b/build.rs new file mode 100644 index 0000000..7b3325c --- /dev/null +++ b/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/src/lib.rs b/src/lib.rs new file mode 100644 index 0000000..0641e13 --- /dev/null +++ b/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/wrapper.h b/wrapper.h new file mode 100644 index 0000000..3c8d7cf --- /dev/null +++ b/wrapper.h @@ -0,0 +1,2 @@ +#include +#include -- cgit v1.2.1