1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832
|
-*- org -*-
#+TITLE: sequoia-openpgp NEWS – history of user-visible changes
#+STARTUP: content hidestars
* Changes in 2.0.0
** Notable changes
- This release adds support for RFC 9580, which revises RFC 4880.
The revision adds new cryptographic algorithms, deprecates and
removes old ones, and supports authenticated encryption. The
legacy protocol version is still supported.
** Notable fixes
- We now gracefully handle memory allocation failures when
computing Argon2.
- We fixed an internal mapping from asymmetric algorithm to slots
in a policy data structure.
* Changes in 2.0.0.alpha.2
** Notable changes
- Our MSRV is now 1.79.
** API changes
- ValidKeyAmalgamation::into_key_amalgamation removed
- serialize::stream::Recipient::new now takes a KeyHandle
- serialize::stream::Recipient::keyid renamed to key_handle, now
returns an Option<KeyHandle>
- serialize::stream::Recipient::set_keyid renamed to
set_key_handle, now takes an Option<KeyHandle>, and is fallible
- serialize::stream::Recipient new now also takes a Features
argument
- serialize::stream::Recipient now only implements
From<ValidSubordinateKeyAmalgamation> and
From<ValidErasedKeyAmalgamation>
- KeyAmalgamationIter::key_handles2 renamed to key_handles
- ValidKeyAmalgamationIter::key_handles2 renamed to key_handles
- Cert::insert_packets2 renamed to insert_packets
- Fingerprint no longer implements Borrow<[u8]>
- KeyID no longer implements Borrow<[u8]>
- packet::signature::subpacket::CLOCK_SKEW_TOLERANCE is now simply
a std::time::Duration
- cert::Preferences::preferred_aead_algorithms removed
- Curve::len removed
- PacketParser::encrypted removed
- StandardPolicy::packet_tag_cutoff removed
- Features::supports_mdc removed
- Features::set_mdc removed
- Features::clear_mdc removed
- SignatureBuilder::set_preferred_aead_algorithms removed
- SubpacketAreas::preferred_aead_algorithms removed
- SubpacketValue::PreferredAEADAlgorithms removed
** New functionality
- ValidCert::key_handle
- ValidCert::fingerprint
- ValidCert::keyid
- ValidComponentAmalgamation::amalgamation
- ValidKeyAmalgamation::amalgamation
- armor::Writer::set_profile
- CertBuilder::set_features
** Notable fixes
- Generation of v6 certification approval signatures is fixed
- Key encryption now only uses AEAD by default for v6 keys
- Messages using SEIPDv1 for a v6 recipient, and those using
SEIPDv2 for a v4 recipient are now correctly encrypted
- stream::padding::Padder now emits padding packets when creating
RFC9580 messages, and nothing when creating RFC4880 messages
- X448 encryption and decryption fixed
- Sequoia no longer ignores formatting errors when reading secret
keys. This reverts a change introduced with version 1.17.0.
* Changes in 2.0.0.alpha.1
** API changes
- ComponentBundle::self_signatures2 renamed to ComponentBundle::self_signatures
- ComponentBundle::certifications2 renamed to ComponentBundle::certifications
- ComponentBundle::self_revocations2 renamed to ComponentBundle::self_revocations
- ComponentBundle::other_revocations2 renamed to ComponentBundle::other_revocations
- Signature::verify renamed to Signature::verify_document
- armor::Reader::new removed
- Padding::with_policy now takes a closure
- PKESK3::new now takes Option<KeyID>
- PKESK3::recipient now returns Option<KeyID>
- message::Token is now private
- message::MessageParserError is now private
- cert::CipherSuite no longer implements PartialOrd, Ord
- SignatureBuilder::set_reference_time is now fallible
- Fingerprint::Invalid is now called Fingerprint::Unknown and has a
version field
- Fingerprint::from_bytes now takes a version and is fallible
- Padding::new is now fallible
- SessionKey::new is now fallible
- mem::Encrypted::new is now fallible
- crypto::random is now fallible
- RegexSet::everything is now infallible
- Cert::revocation_keys now returns an unboxed iterator
- ValidCert::revocation_keys no longer takes a policy argument
- ValidCert::revocation_keys now returns an unboxed iterator
- All hash functions defined on Signature and SignatureBuilder,
such as Signature::hash_standalone, are now fallible
- All hash functions defined on Signature and SignatureBuilder,
such as Signature::hash_standalone, now check the signature type
- crypto::hash::Hash::hash is now fallible
- stream::Signer::new, stream::Signer::with_template, and
stream::Signer::add_signer are now fallible: the streaming signer
now computes the set of acceptable hash algorithms as signers are
added via the constructors and Signer::add_signer, and returns an
error if that set ever gets empty
- stream::Signer::hash_algo now returns an error if the given
algorithm is not acceptable for the set of signers
- Error::UnsupportedCert2 renamed to Error::UnsupportedCert
- TSK::set_filter now requires the filter to be Send + Sync
- TSK::into_packets now returns an iterator that is Send + Sync
- Cert no longer implements conversion into Vec<Packet>
- Cert no longer implements IntoIterator
- Cert::into_packets2 renamed to Cert::into_packets
- ValidAmalgamation::cert renamed to ValidAmalgamation::valid_cert
- Message no longer derefs to PacketPile, use Message::packets
- CertRevocationBuilder no longer derefs to SignatureBuilder
- SubkeyRevocationBuilder no longer derefs to SignatureBuilder
- UserIDRevocationBuilder no longer derefs to SignatureBuilder
- UserAttributeRevocationBuilder no longer derefs to SignatureBuilder
- Parse::from_buffered_reader is now mandatory
- Parse::from_reader is no longer mandatory
- SKESK6 no longer derefs to SKESK4
- PacketPileParser no longer derefs to PacketParserResult
- ValidCert no longer derefs to Cert
- ValidateAmalgamation::with_policy now takes a &self
- ComponentBundle no longer derefs to the component
- SignatureType::AttestationKey renamed to
SignatureType::CertificationApproval
- SubpacketTag::AttestedCertifications renamed to
SubpacketTag::ApprovedCertifications
- SubpacketValue::AttestedCertifications renamed to
SubpacketValue::ApprovedCertifications
- ComponentBundle::attestations renamed to
ComponentBundle::approvals
- SubpacketAreas::attested_certifications renamed to
SubpacketAreas::approved_certifications
- SignatureBuilder::set_attested_certifications renamed to
SignatureBuilder::set_approved_certifications
- ValidUserIDAmalgamation::attested_certifications renamed to
ValidUserIDAmalgamation::approved_certifications
- ValidUserIDAmalgamation::attestation_key_signatures renamed to
ValidUserIDAmalgamation::certification_approval_key_signatures
- ValidUserAttributeAmalgamation::attested_certifications renamed
to ValidUserAttributeAmalgamation::approved_certifications
- ValidUserAttributeAmalgamation::attestation_key_signatures
renamed to
ValidUserAttributeAmalgamation::certification_approval_key_signatures
- Packet::AED removed
- packet::aed::AED1 removed
- serialize::stream::Encryptor2 renamed to Encryptor
- crypto::ecdh::decrypt_unwrap2 renamed to decrypt_unwrap2
- UserID::name2 renamed to UserID::name
- UserID::comment2 renamed to UserID::comment
- UserID::email2 renamed to UserID::email
- UserID::uri2 renamed to UserID::uri
- Features::supports_aead removed
- Features::set_aead removed
- Features::clear_aead removed
- cert::amalgamation::ValidAmalgamation::map has been moved to
cert::amalgamation::ValidBindingSignature::map
- cert::amalgamation::ValidAmalgamation is now dyn-compatible
- crypto::AEADAlgorithm::iv_size removed
- DecryptionHelper::decrypt now uses dynamic dispatch for the
`decryption` parameter
- DecryptionHelper::decrypt now returns a Result<Option<Cert>>
- UserIDAmalgamation::attest_certifications2 renamed to
attest_certifications
- UserAttributeAmalgamation::attest_certifications2 renamed to
attest_certifications
- ValidUserAttributeAmalgamation::attest_certifications renamed to
approve_of_certifications
- ValidUserIDAmalgamation::attest_certifications renamed to
approve_of_certifications
- UserAttributeAmalgamation::attest_certifications renamed to
approve_of_certifications
- UserIDAmalgamation::attest_certifications renamed to
approve_of_certifications
- ComponentAmalgamation no longer derefs to the ComponentBundle
- KeyAmalgamation no longer derefs to ComponentAmalgamation<Key>
- ValidComponentAmalgamation no longer derefs to ComponentAmalgamation
- ValidKeyAmalgamation no longer derefs to KeyAmalgamation
- Signature::hash_userid_attestation renamed to
hash_userid_approval
- Signature::hash_user_attribute_attestation renamed to
hash_user_attribute_approval
- Signature::verify_userid_attestation renamed to
verify_userid_approval
- Signature::verify_user_attribute_attestation renamed to
hash_user_attribute_approval
- packet::CompressedData::container_ref
- packet::CompressedData::container_mut
- packet::CompressedData no longer derefs to Container
- packet::seip::SEIP1::container_ref
- packet::seip::SEIP1::container_mut
- packet::seip::SEIP1 no longer derefs to Container
- packet::seip::SEIP2::container_ref
- packet::seip::SEIP2::container_mut
- packet::seip::SEIP2 no longer derefs to Container
- PacketPile::pretty_print removed
- parse::stream::MessageStructure no longer derefs to [MessageLayer]
- packet::Container no longer derefs to packet::Body
- Key6::import_public_cv25519 renamed to import_public_x25519
- Key6::import_public_x25519 now produces a X25519 key, not an ECDH
key
- Key6::import_public_ed25519 now produces an Ed25519 key, not an
EdDSALegacy key
- CertBuilder::general_purpose is more ergonomic now. Its first
parameter is dropped, the second can take any number of user IDs.
- UserID::from_address now uses distinct types for its arguments.
The name and comment argument now take an Into<Option<&str>>.
- UserID::from_unchecked address now uses distinct types for its
arguments. The name and comment argument now take an
Into<Option<&str>>.
- SignatureBuilder::set_revocation_key now takes a single key
- parse::stream::VerificationError is now marked non-exhaustive
- Parse is now sealed
** New functionality
- Signature::hash_userid_attestation
- Signature::hash_user_attribute_attestation
- Message::packets
- PacketPileParser::packet
- PacketPileParser::packet_mut
- crypto::PublicKeyAlgorithm
- crypto::Curve
- crypto::SymmetricAlgorithm
- crypto::AEADAlgorithm
- crypto::HashAlgorithm
- crypto::Curve::BrainpoolP384
- public re-export of anyhow
- cert::amalgamation::ValidBindingSignature
- impl Borrow<[u8]> for Fingerprint
- impl Borrow<[u8]> for KeyID
- ComponentAmalgamation::binding_signature
- ComponentAmalgamation::approvals
- UserIDAmalgamation::revocation_status
- UserAttributeAmalgamation::revocation_status
- UnknownComponentAmalgamation::unknown
- KeyAmalgamation::key
- KeyAmalgamation::revocation_status
- PrimaryKeyAmalgamation::binding_signature
- SubordinateKeyAmalgamation::binding_signature
- KeyAmalgamation::cert
- KeyAmalgamation::bundle
- KeyAmalgamation::component
- KeyAmalgamation::self_signatures
- KeyAmalgamation::certifications
- KeyAmalgamation::self_revocations
- KeyAmalgamation::other_revocations
- KeyAmalgamation::signatures
- ValidComponentAmalgamation::cert
- ValidComponentAmalgamation::binding_signature
- ValidComponentAmalgamation::bundle
- ValidComponentAmalgamation::component
- ValidComponentAmalgamation::approvals
- ValidUserIDAmalgamation::userid
- ValidUserAttributeAmalgamation::user_attribute
- ValidKeyAmalgamation::cert
- ValidKeyAmalgamation::binding_signature
- ValidKeyAmalgamation::bundle
- ValidKeyAmalgamation::component
- ValidKeyAmalgamation::self_signatures
- ValidKeyAmalgamation::certifications
- ValidKeyAmalgamation::self_revocations
- ValidKeyAmalgamation::other_revocations
- ValidKeyAmalgamation::approvals
- ValidKeyAmalgamation::signatures
- parse::stream::MessageStructure::iter
- Key6::import_secret_x25519
- Key6::import_secret_ed25519
- Key6::import_public_x448
- Key6::import_secret_x448
- Key6::import_public_ed448
- Key6::import_secret_ed448
- SignatureBuilder::add_revocation_key
- parse::stream::VerificationError::UnknownSignature
- RawCert::into_owned
** Deprecated functionality
- Cert::insert_packets, use Cert::insert_packets2 instead
** Notable fixes
- Fixed an integer overflow parsing PKESKv6 packets.
* Changes in 2.0.0.alpha.0
The major new feature is the support for RFC9580, which modernizes
the cryptographic primitives used in OpenPGP. Notably, it adds
Authenticated Encryption, Elliptic Curve Cryptography, and
deprecates old algorithms.
We have also used the opportunity to clean up our API. Most
programs should only require minor adjustments.
** API changes
- Fingerprint::V5 removed
- KeyID::V4 removed
- HashAlgorithm::context now returns crypto::hash::Builder
- crypto::Hash::hash now takes a &mut crypto::hash::Context
- crypto::hash::Digest removed
- SKESK::V5 removed
- SKESK5 removed
- PacketParser::decrypt: The parameter `algo` is now polymorphic
over `Into<Option<SymmetricAlgorithm>>`.
- DecryptionHelper::decrypt: The function `decrypt` now takes an
optional symmetric algorithm.
- SKESK::decrypt now returns an optional symmetric algorithm.
- PKESK::decrypt now returns an optional symmetric algorithm.
- key::SecretKeyMaterial::decrypt now takes a &Key.
- key::SecretKeyMaterial::decrypt_in_place now takes a &Key.
- key::SecretKeyMaterial::encrypt now takes a &Key.
- key::SecretKeyMaterial::encrypt_in_place now takes a &Key.
- key::Encrypted::decrypt now takes a &Key.
- key::Unencrypted::encrypt now takes a &Key.
- Curve is now marked as non-exhaustive
- armor::Kind is now marked as non-exhaustive
- armor::ReaderMode is now marked as non-exhaustive
- cert::Ciphersuite is now marked as non-exhaustive
- Profile is now marked as non-exhaustive
- packet::Tag is now marked as non-exhaustive
- user_attribute::Subpacket is now marked as non-exhaustive
- user_attribute::Image is now marked as non-exhaustive
- parse::Dearmor is now marked as non-exhaustive
- impl From<MPI> for ProtectedMPI has been removed
- NullPolicy::new is now marked as unsafe
- DataFormat::MIME removed
- DataFormat::Text is deprecated in favor of DataFormat::Unicode
- DataFormat::Unknown is a u8 now
- Curve::bits now returns Result<usize>
- HashAlgorithm::from_str now returns Result<Self, crate::Error>
** Policy changes
- Version 4 DSA keys and signatures will be rejected from the
2030-02-01 on.
- Version 4 ElGamal keys will be rejected from the 2025-02-01 on.
- Version 1 SEIPD packets with IDEA or CAST5 be rejected from the
2025-02-01 on.
** New functionality
- Fingerprint::V6
- KeyID::Long
- S2K::Argon2
- HashAlgorithm::SHA3_256
- HashAlgorithm::SHA3_512
- types::Features::clear_seipdv2
- types::Features::set_seipdv2
- types::Features::supports_seipdv2
- SubpacketTag::PreferredAEADCiphersuites
- SubpacketValue::PreferredAEADCiphersuites
- SubpacketAreas::preferred_aead_ciphersuites
- SignatureBuilder::set_preferred_aead_ciphersuites
- Preferences::preferred_aead_ciphersuites
- Profile
- Key::V6
- Key6
- CertBuilder::set_profile
- key::Encrypted::new_aead
- key::Encrypted::aead_algo
- key::Encrypted::aead_iv
- mpi::PublicKey::X25519
- mpi::PublicKey::X448
- mpi::PublicKey::Ed25519
- mpi::PublicKey::Ed448
- mpi::SecretKeyMaterial::X25519
- mpi::SecretKeyMaterial::X448
- mpi::SecretKeyMaterial::Ed25519
- mpi::SecretKeyMaterial::Ed448
- mpi::Ciphertext::X25519
- mpi::Ciphertext::X448
- mpi::Signature::Ed25519
- mpi::Signature::Ed448
- Key4::generate_x25519
- Key4::generate_x448
- Key4::generate_ed25519
- Key4::generate_ed448
- policy::AsymmetricAlgorithm::X25519
- policy::AsymmetricAlgorithm::X448
- policy::AsymmetricAlgorithm::Ed25519
- policy::AsymmetricAlgorithm::Ed448
- PublicKeyAlgorithm::X25519
- PublicKeyAlgorithm::X448
- PublicKeyAlgorithm::Ed25519
- PublicKeyAlgorithm::Ed448
- crypto::hash::Context
- HashAlgorithm::digest_size
- crypto::hash::Builder
- Signature::V6
- Signature6
- SignatureBuilder::prefix_salt
- SignatureBuilder::set_prefix_salt
- HashAlgorithm::salt_size
- OnePassSig::V6
- OnePassSig6
- Packet::Padding
- Padding
- Tag::Padding
- KeyAmalgamationIter::key_handles2
- ValidKeyAmalgamationIter::key_handles2
- SKESK::V6
- SKESK6
- impl From<Option<KeyHandle>> for KeyID
- PKESK::V6
- PKESK6
- SEIP::V2
- SEIP2
- serialize::stream::Encryptor2::aead_algo
- key::KeyRole::role
- key::KeyRoleRT
- key::SecretKeyMaterial::encrypt_with
- key::SecretKeyMaterial::encrypt_in_place_with
- key::Unencrypted::encrypt_with
- The RustCrypto backend now supports OCB.
- The Windows CNG backend backend now supports OCB implemented
using the OCB implementation from RustCrypto.
- Packet::is_critical
- Tag::is_critical
** Deprecated functionality
- SubpacketTag::PreferredAEADAlgorithms
- SubpacketValue::PreferredAEADAlgorithms
- SubpacketAreas::preferred_aead_algorithms
- SignatureBuilder::set_preferred_aead_algorithms
- KeyAmalgamationIter::key_handles
- ValidKeyAmalgamationIter::key_handles
- SymmetricAlgorithm::IDEA
- SymmetricAlgorithm::TripleDES
- SymmetricAlgorithm::CAST5
** Notable fixes
* Changes in 1.22.0
** New functionality
- DetachedVerifier::verify_buffered_reader
** Notable fixes
- UserIdAmalgamation::attest_certifications2,
UserAttributeAmalgamation::attest_certifications2,
ValidUserIdAmalgamation::attest_certifications, and
ValidUserAttributeAmalgamation::attest_certifications now
correctly set the creation time of newly created signatures.
* Changes in 1.21.2
** Notable fixes
- A set of constructors for KeyFlags added in 1.21.0 mistakenly
consumed a KeyFlags. This patch release fixes that, even though
it is technically an API break.
* Changes in 1.21.1
** Notable fixes
- Leftover debugging statements introduced in 1.21.0 printed
long-term Cv25519 secret key material to stderr during
decryption. This patch release fixes that.
* Changes in 1.21.0
** Notable fixes
- The RawCertParser now correctly advance the input stream when
encountering unsupported cert (primary key) versions. Previously,
this resulted in an infinite loop.
- Sequoia built with the OpenSSL backend or the RustCrypto backend
will now make sure that the secret primes of generated RSA keys
are ordered the way OpenPGP demands (i.e. `p` < `q`).
- Sequoia built with the OpenSSL backend, the CNG backend, or the
RustCrypto backend will now make sure that the secret primes of
imported RSA keys are ordered the way OpenPGP demands.
- Loosen trait bounds on Key::clone and Key4::clone.
** Notable changes
- All signature verification methods now take an immutable
reference to the signature. This will cause existing code to
emit warnings about unused mutability, but should not break
anything.
- Sequoia now lazily verifies self signatures in certificates.
Previously, they were eagerly verified during certificate
canonicalization, incurring a substantial cost even for
signatures that were not otherwise considered.
** New functionality
- CipherSuite::variants.
- ComponentBundle::certifications2
- ComponentBundle::other_revocations2
- ComponentBundle::self_revocations2
- ComponentBundle::self_signatures2
- Key::<PublicParts, _>::steal_secret
- Key::<UnknownParts, _>::steal_secret
- Key4::<PublicParts, _>::steal_secret
- Key4::<UnknownParts, _>::steal_secret
- cert::raw::Error::UnsupportedCert
- packet::Unknown::into_error
- The RustCrypto backend now supports ECDH and ECDSA over the NIST
curve P-384.
- The RustCrypto backend now supports ECDH and ECDSA over the NIST
curve P-521.
- UserAttributeAmalgamation::attest_certifications2
- UserIDAmalgamation::attest_certifications2
- KeyFlags::certification
- KeyFlags::signing
- KeyFlags::transport_encryption
- KeyFlags::storage_encryption
- KeyFlags::authentication
- KeyFlags::split_key
- KeyFlags::group_key
- ValidKeyAmalgamation::primary_key_binding_signature
- Fingerprint::aliases
- KeyID::aliases
** Deprecated functionality
- ComponentBundle::certifications
- ComponentBundle::other_revocations
- ComponentBundle::self_revocations
- ComponentBundle::self_signatures
- Add a signature verification cache, which is automatically
consulted by the low-level signature verification functions, like
`Signature::verify_digest`.
- openpgp::packet::signature::cache::SignatureVerificationCache
- openpgp::packet::signature::cache::Entry
- UserAttributeAmalgamation::attest_certifications
- UserIDAmalgamation::attest_certifications
* Changes in 1.20.0
** New functionality
- S2K::Implicit
- Signature::verify_signature
* Changes in 1.19.0
** Notable fixes
- Key4::import_secret_cv25519 will now clamp some bits of the given
secret scalar to make the generated secret key packet more
compatible with implementations that do not implicitly do the
clamping before decryption.
- Sequoia built with the OpenSSL backend will now use the correct
representation of points on Weierstrass curves. OpenPGP uses the
uncompressed representation. Previously, the OpenSSL backend
used the compressed representation by mistake.
** New functionality
- Curve::variants
* Changes in 1.18.0
** New functionality
- ComponentAmalgamation::certifications_by_key
- UserIDAmalgamation::valid_certifications_by_key
- KeyAmalgamation::valid_certifications_by_key
- UserIDAmalgamation::active_certifications_by_key
- KeyAmalgamation::active_certifications_by_key
- UserIDAmalgamation::valid_third_party_revocations_by_key
- KeyAmalgamation::valid_third_party_revocations_by_key
- Parse::from_buffered_reader
- armor::Reader::from_buffered_reader
- Cert::exportable
- CertBuilder::set_exportable
- UserID::from_static_bytes
- Error::ShortKeyID
- Cert::into_packets2
- TSK::into_packets
** Deprecated functionality
- Cert::into_packets
* Changes in 1.17.0
** Notable fixes
- Sequoia now ignores some formatting errors when reading secret
keys. Being lenient in this case helps the user recover their
valuable key material.
- Previously, Sequoia would buffer packet bodies when mapping is
enabled in the parser, even if the packet parser is not
configured to buffer the bodies. This adds considerable
overhead.
Starting with this version, Sequoia no longer includes the packet
bodies in the maps unless the parser is configured to buffer any
unread content.
This makes parsing packets faster if you don't rely on the packet
body in the map, but changes the default behavior. If you need
the old behavior, please do adjust your code to buffer unread
content.
- To increase compatibility with early v4 certificates, if there is
no key flags subpacket on either the active binding signature or
the active direct key signature, we infer the key flags from the
key's role and public key algorithm.
- When creating an authentication-capable subkey, Sequoia now also
adds a primary key binding signature.
- The MSRV is now 1.67.
- serialize::stream::Encryptor2 replaces
serialize::stream::Encryptor, which fixes an issue with the
lifetimes.
** New functionality
- The RustCrypto backend now supports DSA.
- cert::amalgamation::key::KeyAmalgamationIter::encrypted_secret
- cert::amalgamation::key::ValidKeyAmalgamationIter::encrypted_secret
- crypto::SessionKey::as_protected
- crypto::ecdh::decrypt_unwrap2
- packet::Key::generate_dsa
- packet::Key::generate_elgamal
- packet::UserID::comment2
- packet::UserID::email2
- packet::UserID::name2
- packet::UserID::uri2
- parse::PacketParser::start_hashing
- parse::PacketParserBuilder::automatic_hashing
- impl Eq, PartialEq for regex::Regex
- regex::Regex::as_str
- impl Eq, PartialEq for regex::RegexSet
- regex::RegexSet::as_bytes
- impl Default for types::AEADAlgorithm
- serialize::stream::Encryptor2
- types::AEADAlgorithm::GCM
- types::Bitfield
- types::Features::clear_seipdv1
- types::Features::set_seipdv1
- types::Features::supports_seipdv1
- types::Features::as_bitfield
- types::KeyFlags::as_bitfield
- types::KeyServerPreferences::as_bitfield
** Deprecated functionality
- cert::Preferences::preferred_aead_algorithms
- crypto::ecdh::decrypt_unwrap
- packet::UserID::comment
- packet::UserID::email
- packet::UserID::name
- packet::UserID::uri
- packet::signature::SignatureBuilder::set_preferred_aead_algorithms
- packet::signature::subpacket::SubpacketAreas::preferred_aead_algorithms
- packet::signature::subpacket::SubpacketTag::PreferredAEADAlgorithms
- packet::signature::subpacket::SubpacketValue::PreferredAEADAlgorithms
- serialize::stream::Encryptor
- types::Curve::len, use types::Curve::bits instead
- types::Features::clear_mdc
- types::Features::set_mdc
- types::Features::supports_mdc
- types::Features::clear_aead
- types::Features::set_aead
- types::Features::supports_aead
* Changes in 1.16.0
** New functionality
- Add KeyFlags::set_certification_to.
- Add KeyFlags::set_signing_to.
- Add KeyFlags::set_transport_encryption_to.
- Add KeyFlags::set_storage_encryption_to.
- Add KeyFlags::set_split_key_to.
- Add KeyFlags::set_group_key_to.
** Notable fixes
- Several parser bugs were fixed. These are all low-severity as
Rust correctly detects the out of bounds access and panics.
** Notable changes
- The crypto/botan feature now selects Botan's v3 interface. The
crypt/botan2 feature can be used to select Botan's v2 interface.
* Changes in 1.15.0
** New functionality
- StandardPolicy::accept_hash_property
** Notable changes
- Updated the crypto-rust backend.
- Updated the crypto-cng backend.
* Changes in 1.14.0
** New cryptographic backends
- We added a backend that uses Botan.
** New functionality
- crypto::mem::Protected::new
- crypto::mpi::SecretKeyMaterial::from_bytes
- crypto::mpi::SecretKeyMaterial::from_bytes_with_checksum
- fmt::hex::Dumper::with_offset
- parse::buffered_reader re-export
- policy::AsymmetricAlgorithm::BrainpoolP384
- RawCert implements Parse
** Deprecated functionality
- crypto::mpi::SecretKeyMaterial::parse
- crypto::mpi::SecretKeyMaterial::parse_with_checksum
* Changes in 1.13.0
** New cryptographic backends
- We added a backend that uses OpenSSL.
** New functionality
- RawCertParser
- RawCert
- RawPacket
* Changes in 1.12.0
- Bug fix release.
* Changes in 1.11.0
** New functionality
- Signature3 implements support for parsing, verifying, and
reserializing version 3 signature packages.
- AsymmetricAlgorithm implements PartialEq, Eq, and Copy.
- AsymmetricAlgorithm::variants.
- PublicKeyAlgorithm::variants.
- SymmetricAlgorithm::variants.
- AEADAlgorithm::variants.
- CompressionAlgorithm::variants.
- HashAlgorithm::variants.
- SignatureType::variants.
- ReasonForRevocation::variants.
- DataFormat::variants.
- packet::Tag::variants.
- SubpacketTag::variants.
- StandardPolicy::reject_all_hashes
- StandardPolicy::reject_all_critical_subpackets
- StandardPolicy::reject_all_asymmetric_algos
- StandardPolicy::reject_all_symmetric_algos
- StandardPolicy::reject_all_aead_algos
- StandardPolicy::reject_all_packet_tags
- StandardPolicy::accept_packet_tag_version
- StandardPolicy::reject_packet_tag_version
- StandardPolicy::reject_packet_tag_version_at
- StandardPolicy::packet_tag_version_cutoff
** Deprecated functionality
- StandardPolicy::packet_tag_cutoff
* Changes in 1.10.0
** New functionality
- Cert::insert_packets2
- Cert::insert_packets_merge
- crypto::ecdh::aes_key_wrap
- crypto::ecdh::aes_key_unwrap
- Error::UnsupportedCert2
- TryFrom<Packet> for Unknown
- types::{Curve, SymmetricAlgorithm, AEADAlgorithm,
PublicKeyAlgorithm}'s Display implementation now provides short
names by default. The long descriptions are provided by the
alternate formatter (e.g. =format!("{:#}", ...)=)
- cert::KeyBuilder
- cert::SubkeyBuilder
- HashAlgorithm::oid is available on all crypto backends
(previously only on Nettle)
** Deprecated functionality
- Error::UnsupportedCert, use Error::UnsupportedCert2 instead
- DataFormat::MIME, no replacement, see #863 for details
- PacketParser::encrypted, use the negation of PacketParser::processed
* Changes in 1.9.0
** New functionality
- AEADAlgorithm::nonce_size replaces AEADAlgorithm::iv_size
- crypto::backend
- Curve::field_size
- MPI::is_zero
- MPI::zero
- packet::Any
- Packet::version
- SignatureBuilder::set_reference_time
- SignatureBuilder::effective_signature_creation_time
** Deprecated functionality
- armor::Reader::new, use armor::Reader::from_reader instead
- message::Token is not covered by SemVer guarantees, DO NOT match on it
- AEADAlgorithm::iv_size, use AEADAlgorithm::nonce_size
* Changes in 1.8.0
** New functionality
- crypto::Signer::acceptable_hashes
- Fingerprint::V5
* Changes in 1.7.0
** Notable fixes
- sequoia-openpgp can now be compiled to WASM.
- The MSRV is now 1.56.1.
* Changes in 1.6.0
** Notable fixes
- Decryption of encrypted messages and verification of
inline-signed messages is now considerably faster, as is ASCII
Armor encoding and decoding.
** New functionality
- CertRevocationBuilder::add_notation
- CertRevocationBuilder::set_notation
- KeyFlags::clear_group_key
- SubkeyRevocationBuilder::add_notation
- SubkeyRevocationBuilder::set_notation
- UserAttributeRevocationBuilder::add_notation
- UserAttributeRevocationBuilder::set_notation
- UserIDRevocationBuilder::add_notation
- UserIDRevocationBuilder::set_notation
* Changes in 1.5.0
** Notable changes
- This crate is now licensed under the LGPL 2.0 or later.
* Changes in 1.4.0
** New cryptographic backends
- We added a backend based on the RustCrypto crates.
** New functionality
- CipherSuite::is_supported
- MPI::value_padded
- Preferences::policy_uri
- ProtectedMPI::value_padded
- TSK::eq
- ValidAmalgamation::revocation_keys
- ValidCert::policy_uri
- ValidCert::revocation_keys
** Notable fixes
- Filters set using CertParser::unvalidated_cert_filter are now
preserved during iterations.
* Changes in 1.3.1
** Notable fixes
- Fixed a crash resulting from unconstrained, attacker-controlled
heap allocations.
* Changes in 1.3.0
** New functionality
- CertBuilder::add_subkey_with
- CertBuilder::add_user_attribute_with
- CertBuilder::add_userid_with
- ComponentBundle::attestations
- Encryptor::with_session_key
- Signature::verify_user_attribute_attestation
- Signature::verify_userid_attestation
- SignatureBuilder::pre_sign
- SignatureBuilder::set_attested_certifications
- SignatureType::AttestationKey
- SubpacketAreas::MAX_SIZE
- SubpacketAreas::attested_certifications
- SubpacketTag::AttestedCertifications
- SubpacketValue::AttestedCertifications
- UserAttributeAmalgamation::attest_certifications
- UserIDAmalgamation::attest_certifications
- ValidUserAttributeAmalgamation::attest_certifications
- ValidUserAttributeAmalgamation::attestation_key_signatures
- ValidUserAttributeAmalgamation::attested_certifications
- ValidUserIDAmalgamation::attest_certifications
- ValidUserIDAmalgamation::attestation_key_signatures
- ValidUserIDAmalgamation::attested_certifications
** Notable fixes
- Improve Cert::insert_packets runtime from O(n^2) to O(n log n).
- CertParser returned errors out of order (#699).
* Changes in 1.1.0
** New functionality
- The new regex module provides regular expression support for
scoping trust signatures.
- Sequoia now supports the Cleartext Signature Framework.
- ComponentAmalgamation::signatures
- ComponentBundle::signatures
- Fingerprint::to_spaced_hex
- HashAlgorithm::text_name
- KeyHandle now implements FromStr
- KeyHandle::is_invalid
- KeyHandle::to_hex
- KeyHandle::to_spaced_hex
- KeyID::to_spaced_hex
- Signature4::hash_for_confirmation
- Signature::hash_for_confirmation
- TSK::armored
- ValidComponentAmalgamation::signatures
** Notable fixes
- Fixed two crashes related to detached signature verification.
- Fixed a parsing bug where the parser did not consume all data in
an compressed data packet.
* Changes in 1.0.0
This is the initial stable release.
|