All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Handle closed
yubihsm-connector
connection (#464)
- Impl
signature::hazmat::PrehashSigner
for ECDSA signer (#362) - Impl
signature::Keypair
trait for ECDSA signer (#364) - Implement recoverable signatures for ECDSA/secp256k1 (#408)
- Bump tiny_http to 0.12 (#372)
- Bump asymmetric crypto dependencies; MSRV 1.65 (#406)
ecdsa
v0.16ed25519
v2ed25519-dalek
v2.0.0-pre.0k256
v0.13p256
v0.13p384
v0.13pbkdf2
v0.12rsa
v0.9 (#437)signature
v2
- Bump
bitflags
dependency to v2.0 (#409)
- Bump
uuid
to v1.0 (#321) - Bump asymmetric crypto dependencies; MSRV 1.57 (#325)
- Bump symmetric crate dependencies (#337)
aes
v0.8ccm
v0.5cmac
v0.7- Replace
block-modes
withcbc
v0.1
- Support for
decrypt_oaep
command (#277)
- Bump
rusb
to 0.9.0 (#249) - Bump
pbkdf2
to 0.9.0 (#244) - Upgrade to Rust 2021 edition; MSRV 1.56 (#258)
- Replace
chrono
with thetime
crate (#271) - Replace
lazy_static
withonce_cell
(#272) - Default USB timeout is now 30 seconds to accomodate RSA commands (#274)
- Bump
ed25519
dependency to v1.3 (#274) - Bump
ecdsa
to v0.13 (#289) - Bump
k256
to v0.10 (#289) - Bump
p256
to v0.10 (#289) - Bump
p384
to v0.9 (#289)
- Potential session mutex re-entrancy bug (#273)
criterion
benchmarks (#234)harp
dependency (#259)anomaly
dependency (#264)- Session auto-close in
Drop
handler (#265)
- Bump
rusb
to 0.8.0 (#170) - Bump
aes
to v0.7 (#183) - Bump
aead
to v0.4 (#183) - Bump
ccm
to v0.4 (#183) - Bump
cmac
to v0.6 (#183) - Bump
hmac
to v0.11 (#183) - Bump
pbkdf2
to v0.8 (#183) - Bump
ecdsa
crate to v0.12 (#207) - Bump
k256
crate to v0.9 (#207) - Bump
p256
crate to v0.9 (#207) - Bump
p384
crate to v0.8 (#207) - MSRV 1.51+ (#207)
- Bump
tiny_http
dependency to 0.8.0; fixesRUSTSEC-2020-0031
(#158) - Bump
pbkdf2
dependency to v0.7 (#162)
- Bump
ecdsa
crate to v0.10 (#141) - Bump
k256
crate to v0.7 (#141) - Bump
p256
crate to v0.7 (#141) - Bump
p384
crate to v0.7 (#141)
- Bump
ecdsa
crate dependency to v0.9; MSRV 1.46+ (#130)
- Support for k256::ecdsa::recoverable::Signature (#95)
- Signatory-based types (#91)
- Update
signatory
to v0.20 (#56) - Update
aes
,block-modes
,cmac
,hmac
,pbkdf2
,sha2
dependencies (#55)
- connector/usb: Use
rusb::Context
instead ofGlobalContext
(#15)
- Rename
yolocrypto
feature tountested
(#5) - MSRV 1.40+ (#3)
- Update
anomaly
requirement from 0.1.2 to 0.2.0 (#2)
- Upgrade
signatory
to v0.18 - Use Anomaly for error handling
- Upgrade to
signatory
v0.17
- Upgrade to
signatory
v0.16;zeroize
1.0
- Replace
gaunt
withharp
- Remove failure
- connector: Switch from
libusb
torusb
- Upgrade to
signatory
v0.15
- Refactor
Algorithm
names to be camel case and subdivide RSA - ecdh: Initial support for Derive ECDH command
- ssh: Initial support for the Sign SSH Certificate command
- template: Add support for get/put commands
- Rename
rsa-preview
cargo feature toyolocrypto
- Upgrade to
signatory
v0.13
- Improve missing auth key errors
http-server
: Fix startup message
http-server
: Print listener info on startup
- Fix
http-server
import bug
http-server
feature: mimic yubihsm-connector functionality
- Upgrade to
signatory
v0.12
- Eliminate module name prefixes from error types
- Upgrade to
zeroize
0.9 - Improve
yubihsm::Client
'sreset_device_and_reconnect
API - Retry commands after session messages limits are exceeded
- Remove
byteorder
crate - 2018 edition idiom cleanups
- setup: Support for (optionally) skipping initial device reset
- Upgrade to
block-modes
v0.3 - Upgrade to
zeroize
0.8 - Switch from
rand_os
togetrandom
- Integrate Signatory types
- Make
yubihsm::client::Client
thread-safe - Move asymmetric algorithm modules into the toplevel
- Fix parsing of wrap nonces
- Make signatory a mandatory dependency
rsa-preview
cargo feature- Factor device info/storage/wrap commands into public types
- Factor algorithms into their own Rust modules
- Unify connectors as
struct Connector
- Integrate signatory-yubihsm
- Refactor and rename
wrap::Message
andwrap::Nonce
- Add
setup
module for initial YubiHSM2 provisioning - Eliminate redundant prefixes in type names
- Match Yubico's API changes from their latest SDK release
- Upgrade
ring
crate tov0.14
; switch torand_os
cratev0.1
- Update to Rust 2018 edition
- Upgrade
subtle
crate tov2
HttpConnector
: upgrade togaunt
v0.1.0- Terminate sessions on encryption failures
HttpConnector
: usegaunt
for an HTTP client- session: Catch panics which occur in drop handler
- USB error message improvements
- Implement filter support for the List Objects command
- Upgrade to zeroize 0.4
- Derive Clone and Debug on all connectors
- Upgrade digest 0.8 (and all transitive dependencies)
Cargo.toml
: Don't build the nightly feature on docs.rs
- Use the zeroize crate
Session
: addmessages_sent()
- API overhaul: eliminate adapter-related generics with trait objects
UsbDevices
: renameserials()
toserial_numbers()
serial_number.rs
: Manually implSerialize
,Deserialize
,Debug
, andDisplay
- Export UsbConfig from crate root (when available)
- UsbDevices: add
len()
,is_empty()
,as_slice()
, andinto_iter()
- adapter/usb: Don't verbosely log every discovered YubiHSM2
- Cargo.toml: update dependencies (aes, subtle, uuid)
- Make all names singular
- Expose more information about USB devices
- Add
serial_number()
method toSession
andAdapter
trait
- Expand HSM error code support
- Make
http
a cargo feature - Rename
MockHSM
=>MockHsm
; export from crate root - Factor HSM error handling into
HsmErrorKind
- Refactor Algorithm and related types
- Decode detailed HSM errors from responses
- Implement Put Option commands
- Implement Get Option commands
- USB support. Rename
Connector
=>Adapter
http_connector.rs
: Derive Clone on HttpConfig
- Add
yubihsm::sign_ecdsa_raw_digest()
- AsymmetricAlgorithm: fix typo in
EC_K256
conversion
- Fix builds with the "doc" feature
- Initial RSASSA-PKCS#1v1.5 and PSS support
- Test SecureChannel MAC verification failure (fixes #14)
- Initial reconnect support
- Support debug output using the
log
crate - Handle session timeouts
- Handle NUL (i.e.
\0
) byte in label before UTF-8 conversion derive(Clone)
forWrapMessage
- ObjectType json deserialization helper
- Implement
set_log_index
command - Implement
generate_hmac_key
,hmac
, andverify_hmac
commands - Remove dependency on rand 0.4.x
- Simplify and remove unnecessary response types
This release includes significant refactoring and API changes, in addition to adding support for several commands.
- Support multiple connections to MockHSM
AuthKey
type (and MockHSM support forput_auth_key
)- Implement
get_opaque
command - Implement
reset
command - Implement
get_pseudo_random
command - Factor
ObjectHandle
andObjectInfo
intoobject
module - Implement
storage_status
command - Have
generate_*
andput_*
commands return anObjectId
- Refactor
object
module into modules for each type - Implement wrapping: export, import, wrap, unwrap, generate wrap key
- Implement
close_session
command - Implement
attest_asymmetric
command - Implement
put_*
commands - Factor all commands into their own individual modules
- Implement
sign_ecdsa_sha2
command - Implement
get_logs
command - Implement
device_info
command
- Use subtle crate for constant time equality
- Upgrade to rand 0.5
- Factor command methods from
Session
intocommands.rs
- Implement SignDataECDSA command
- Add a
nightly
feature
- Use the
aes
crate - Support Rust stable (1.27+)
- Error handling overhaul
- Export HttpConfig from crate toplevel
- Integrated HttpConnector
- Mark Connector as Sync-safe
- Upgrade ed25519-dalek, sha2, and pbkdf2 crates
- Improve DefaultConnector handling
- Rename AbstractSession -> Session (by using default generic arg)
- Make MockHSM (and therefore all Connectors) Send-safe
- Expose connector status as an (Abstract)Session method
- Convert
MockHSM
into ayubihsm::Connector
- Refactor
Session
andConnector
- Have
Session
s ownConnector
s
- Ensure command data is smaller than the YubiHSM2's buffer
- Implement Blink command
- Fixes for docs.rs build
- Initial release