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.
Reader::open
now returnsError::AppletNotFound
instead ofError::Generic
if the PIV applet is not present on the device. This is returned by non-PIV virtual smart cards like Windows Hello for Business, as well as some smart card readers when no card is present.Reader::open
now avoids resetting the card if an error occurs (equivalent to callingYubiKey::disconnect(pcsc::Disposition::LeaveCard)
ifReader::open
succeeds).- Raise minimum
pcsc
version to 2.3.1 and remove workaround (#478) - Bump asymmetric crypto dependencies; MSRV 1.65 (#490)
elliptic-curve
v0.13k256
v0.13p256
v0.13p384
v0.13pbkdf2
v0.12rsa
v0.9 (#502)signature
v2
- Use
x509-cert
certificate builder (#495) - Make
RsaKeyData::new
fallible (#517)
StatusWords::code
now returns the correct code (including embeddedtries
count) forStatusWords::VerifyFailError
. Previously the returned code lost information and was not round-trip compatible withStatusWords::from(u16)
.- Parsing of serial numbers (#466)
- Make
YubiKey::open()
more robust (#504)
- Display inner PC/SC errors (#420)
- Support for metadata command (#371)
- Better
certificate::Serial
inspection (#437)
- MSRV 1.60.0 (#423)
- Bump
rsa
to v0.7.1 (#440) - Switch from
lazy_static
toonce_cell
(#442) - Switch from
subtle-encoding
tobase16ct
(#443)
- 2021 edition upgrade (#343)
- RustCrypto crate upgrades; MSRV 1.57 (#378)
des
v0.8elliptic-curve
v0.12hmac
v0.12num-bigint-dig
v0.8pbkdf2
v0.11p256
v0.11p384
v0.11rsa
v0.6sha1
v0.10 (replacingsha-1
)sha2
v0.10
- Bump
uuid
to v1.0 (#376) - Bump
der-parser
to v8.0 (#402) - Bump
x509-parser
to v0.14 (#402)
- Update
rsa
dependency to 0.5 (#315) - Update
pbkdf2
dependency to 0.9 (#315) - Update
x509-parser
dependency to 0.12 (#315, #322) - Update
nom
to v7.0 (#322)
- Make
yubikey::Buffer
a pub type (#290)
- Have
YubiKey::block_puk
take&mut self
as argument (#289)
Result
alias (#271)
- Renamed crate from
yubikey-piv
=>yubikey
(#267) - Renamed the following:
- Bumped the following dependencies:
- MSRV 1.51+ (#268)
- Flatten API (#274)
- Replace
getrandom
withrand_core
(#276)
- Potential local DoS in TLV parser (#279)
- Typed structs for PIN-protected and admin metadata (#223)
MgmKey::set_default
/MgmKey::set_manual
methods (#224)
- Have
Transaction::set_mgm_key
take touch requirement as bool (#224)
MgmKey::set
method (#224)
- Bump
der-parser
to v5.0 (#194) - Improve self-signed certificates (#207)
- Bump
x509-parser
to v0.9 (#208) - Bump elliptic-curve to 0.8. Also requires bumping p256 and p384 (#208)
- Bump MSRV to 1.46+ (#208)
- Bump
pbkdf2
dependency to v0.7 (#219)
Certificate::generate_self_signed
(#80)YubiKey::open_by_serial
(#69)- CCCID/CHUID tests and cleanups (#65)
- Test
Config::get
(#64) - Test
Key::list
(#61) - Test
YubiKey::verify_pin
(#60)
- Bump
crypto-mac
,des
,hmac
,pbkdf2
(#177) - Bump
p256
to v0.5;p384
to v0.4; MSRV 1.44+ (#175) - Refactor key import function (#128)
- Extract
ChangeRefAction
enum (#82) - TLV extraction (#73)
- Rename
container
tomscmap
(#68) - Finish eliminating
consts
module (#67) - Move
sign
/decrypt
/import
/attest
to thekey
module (#62)
pcsc::Error::NoReadersAvailable
->Error::NotFound
inYubiKey::open*
(#88)
- YubiKey NEO support (#63)
- Use
Reader
to connect toYubiKey
(#51) - Convert
SlotId
andAlgorithmId
into enums (#44) - Use
secrecy
crate for storingCachedPin
(#43) - Change
CHUID
struct to hold complete CHUID value (#42) - Eliminate all usages of
unsafe
(#37, #39) - Make anonymous CHUID struct public (#36)
- Have
sign_data
anddecrypt_data
return aBuffer
(#34) Ins
(APDU instruction codes) enum (#33)- Factor
Response
intoapdu
module; improved debugging (#32)
untested
Cargo feature to mark untested functionality (#30)- Initial connect test and docs (#19)
- Clean up APDU construction with builder API (#15)
- Rewrite translated code to use the
pcsc
crate (#17) - Rename ErrorKind to Error (#13)
- Use
des
crate for 3DES operations (#10) - Replace
PKCS5_PBKDF2_HMAC_SHA1
withpbkdf2
et al crates (#9) - Replace
RAND_bytes
withgetrandom
crate (#8) - Use
log
crate for logging (#7) - Replace
ErrorKind::Ok
withResult
(#6)
- Initial release