diff options
author | Robin Krahl <robin.krahl@ireas.org> | 2018-05-20 10:51:45 +0200 |
---|---|---|
committer | Robin Krahl <robin.krahl@ireas.org> | 2018-05-20 10:51:45 +0200 |
commit | 9059e42614d8572a4fa53a4bd07f450000e451af (patch) | |
tree | 2e610d6ffa148de085d75469bceedcb711e72de0 | |
download | nitrokey-sys-rs-9059e42614d8572a4fa53a4bd07f450000e451af.tar.gz nitrokey-sys-rs-9059e42614d8572a4fa53a4bd07f450000e451af.tar.bz2 |
Initial commit after move from nitrokey-rsv0.1.0
Previously, this crate has been part of the nitrokey-rs repository at
https://git.ireas.org/nitrokey-rs.
-rw-r--r-- | Cargo.toml | 17 | ||||
-rw-r--r-- | build.rs | 17 | ||||
-rw-r--r-- | src/lib.rs | 29 | ||||
-rw-r--r-- | wrapper.h | 2 |
4 files changed, 65 insertions, 0 deletions
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 <robin.krahl@ireas.org>"] +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 <stdbool.h> +#include <libnitrokey/NK_C_API.h> |