Skip to content

v5.7.0

Compare
Choose a tag to compare
@twiss twiss released this 21 Feb 18:38
· 48 commits to main since this release
  • Add support for creating critical signature subpackets (#1599)
    • Most subpackets are now assigned a criticality based on whether failing to interpret their meaning would negatively impact security.
    • If subpackets that are now marked as critical (such as signature creation date, issuer Key ID, key expiration time if set, etc.) are not supported by another OpenPGP implementation, it will now be considered invalid by the implementation rather than ignored. However, since these subpackets are fundamental to the functioning of OpenPGP, they should indeed never be ignored. If an implementation doesn't support them, please upgrade or report it to the relevant implementation as well as or instead of here.
    • For Notation Data subpackets, the caller can now set their criticality using the signatureNotations[*].critical property. When set to critical, if the OpenPGP implementation reading the signature doesn't understand their meaning, they will be rejected rather than ignored. This is useful if the notation is indeed critical (:slightly_smiling_face:) to the functioning of the signature or the key that contains it.
  • Remove default known notations (#1600)
    • Since OpenPGP.js doesn't interpret any notations, we shouldn't consider any of them "known" by default. Rather, we let the calling application indicate the known notations, and it is then responsible for handling them.
    • Specifically, signatures with a critical notation named "preferred-email-encoding@pgp.com" or "pka-address@gnupg.org" will now be rejected by default. We believe that these are not common "in the wild", but if you encounter them, you can add them to the config.knownNotations array, or (preferably) pass a knownNotations array in the config property when verifying a signature, and then handle the preference indicated by the notation data afterwards by inspecting the signaturePacket.notations or rawNotations property.
  • TypeScript: added selfCertification property to the PrimaryUser interface definition (#1594)
  • Docs: mark global generateSessionKeys's encryptionKeys parameter as optional (#1596)
  • CI: Update browser targets (#1549)
  • Update ESLint and other minor dependencies; clean up linting rules (#1602)