)]}'
{
  "commit": "511dfd2c4d033e8603518a9348148b5bd614f601",
  "tree": "77efa4e87da4555eee527a178a07f5d96ca8474e",
  "parents": [
    "0a1d5fae46dd71ce0f7532e2b63f9538acefecab"
  ],
  "author": {
    "name": "Michael Brown",
    "email": "mcb30@ipxe.org",
    "time": "Thu Sep 03 16:35:11 2026 +0100"
  },
  "committer": {
    "name": "Michael Brown",
    "email": "mcb30@ipxe.org",
    "time": "Fri Sep 04 13:43:05 2026 +0100"
  },
  "message": "[crypto] Reject non-canonical ECDSA signature data structures\n\nAn ECDSA signature value is a vector of two integers (r,s) modulo the\ncurve group order.  The ECDSA algorithm itself does not define the\nencoding to be used for these two integers.  At least two different\nstandards exist for representing the vector (r,s): the ASN.1 structure\noriginally defined in RFC 3279 (which uses a SEQUENCE of two INTEGER\nvalues) and the raw byte concatenation structure defined in IEEE\nP1363.  A valid signature vector (r,s) may be freely converted between\nthese two formats.  Changing the format does not logically change the\nvalidity of the signature.\n\nDue to the mathematics underlying ECDSA, the vector (r,-s) is also\nalways a valid signature for the same content.\n\nWith the ASN.1 structure, there exists the possibility of adding extra\ndata that would currently be ignored by the parser: either objects\nfollowing the top-level SEQUENCE, or objects within the SEQUENCE\nfollowing the two INTEGER values.  Adding this data does not logically\nchange the validity of the signature, in the same way that converting\nbetween ASN.1 and P1363 does not logically change the validity of the\nsignature.  However, some public test vector sets check for the\nrejection of signatures containing inserted data.\n\nReject any ECDSA signature object that includes data following the\ntop-level SEQUENCE, or that includes data following the \"r\" and \"s\"\nINTEGER values.\n\nSigned-off-by: Michael Brown \u003cmcb30@ipxe.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "02a87ac60a4a05872e88935d5eeb38861509c752",
      "old_mode": 33188,
      "old_path": "src/crypto/ecdsa.c",
      "new_id": "f4946e69ef195cc348490e3daaf00d44c191779b",
      "new_mode": 33188,
      "new_path": "src/crypto/ecdsa.c"
    }
  ]
}
