• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..15-Mar-2021-

src/H15-Mar-2021-6,2644,585

.cargo-checksum.jsonH A D15-Mar-2021895 11

Cargo.tomlH A D15-Mar-20211.2 KiB4034

LICENSEH A D15-Mar-202111.1 KiB203169

NOTICEH A D15-Mar-2021443 139

README.mdH A D15-Mar-20212.6 KiB4726

rustfmt.tomlH A D15-Mar-20212.4 KiB8281

README.md

1<!--
2Copyright 2017 Marcus Heese
3
4Licensed under the Apache License, Version 2.0 (the "License");
5you may not use this file except in compliance with the License.
6You may obtain a copy of the License at
7
8    http://www.apache.org/licenses/LICENSE-2.0
9
10Unless required by applicable law or agreed to in writing, software
11distributed under the License is distributed on an "AS IS" BASIS,
12WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13See the License for the specific language governing permissions and
14limitations under the License.
15-->
16# Rust PKCS#11 Library
17
18This is a library which brings support for PKCS#11 to Rust. It is aiming at having both a very low-level API to map the PKCS#11 functionality to Rust as well as having a higher-level API for more easy usage as well as bringing more safety for programming against PKCS#11.
19
20## Testing
21
22Testing is currently done with [SoftHSM2](https://github.com/opendnssec/SoftHSMv2 "SoftHSM2 Repo"). A trillion thanks to the people at OpenDNSSEC for writing SoftHSM. This makes it possible to develop applications that need to support PKCS#11. I would have no idea what to do without it. (Suggestions are always welcome.)
23
24### Status
25
26Here is a list of the implementation status and plans on what to do next:
27- [x] Dynamic loading of PKCS#11 module (thanks to [libloading](https://github.com/nagisa/rust_libloading "libloading Repo"))
28- [x] Initializing and Dropping PKCS#11 context
29- [x] Implementing Token and PIN Management functions
30- [x] Implementing Session Management functions
31- [x] Implementing Object Management functions
32- [x] Implementing Key Management functions
33- [x] Implementing Encryption/Decryption functions (TODO: tests still missing)
34- [x] Implementing Message Digest functions (TODO: tests still missing)
35- [x] Implementing Signing and MACing (TODO: tests still missing)
36- [x] Implementing Verifying of signatures and MACs (TODO: tests still missing)
37- [x] Implementing Dual-function cryptographic operations (TODO: tests still missing)
38- [x] Implementing Legacy PKCS#11 functions
39- [x] Reorganize code of low-level API (too bloated, which we all know is what PKCS#11 is like)
40- [x] Import the rest of the C header `pkcs11t.h` types into rust
41- [x] Import the rest of the C header `pkcs11f.h` functions into rust
42- [ ] C type constants to string converter functions, and the reverse (maybe part of the high-level API?)
43- [ ] Design and implement high-level API
44- [x] Publish on crates.io (wow, that was easy)
45- [ ] Write and Generate Documentation for Rust docs
46- [ ] Better Testing (lots of repetitive code + we need a testing framework and different SoftHSM versions for different platforms)
47