{
  "authors": [
    "César SAGAERT"
  ],
  "build-switches": {
    "*": {
      "ada_version": "Ada2022"
    },
    "development": {
      "optimization": [
        "-O3"
      ]
    },
    "release": {
      "runtime_checks": "none"
    }
  },
  "description": "Experimental SPARK Constant Time Big Integer library",
  "licenses": "MIT",
  "long-description": "# SPARK Constant Time Big Integer library\n\nImplementation of a constant time big integer library, inspired by [crypto-bigint](https://github.com/RustCrypto/crypto-bigint).\n\nAll functions are implemented in constant time, except those with an explicit `_Vartime` suffix. Overloaded operators are also constant time.\n\n> ⚠️ The constant time choice primitives like `Ct_Eq`, `Ct_Gt`, `Cond_Select` and `CSwap` rely on best-effort optimisation barriers.\n\n## Usage\n\nThe implementations are generic over the size of the integer:\n\n```ada\npackage U256 is new Bigints.Uint (256);\npackage U1024 is new Bigints.Uint (1024);\n```\n\nThere is also a generic package to deal with modular integers (over a prime field):\n\n```ada\nP : U256.Uint := ... --  a big prime, like 2**255 - 19\npackage GF_P is new Bigints.Modular (U256, P);\n```\n\nIt is up to the user of the library to ensure the chosen modulus is effectively prime. Otherwise, operations like field inversion become invalid (as it relies on Fermat's little theorem).\n\n## Formal proof\n\nThe preinstantations in the library (packages `U256s` and `F25519`), as well as the constant time primitives and basic limb primitives, are formally checked using GNATprove.\n",
  "maintainers": [
    "César SAGAERT <sagaert@adacore.com>"
  ],
  "maintainers-logins": [
    "AldanTanneo"
  ],
  "name": "bigints",
  "origin": {
    "commit": "414589c10e5dec87aebf9cfe8fda675a047d45b1",
    "url": "git+https://github.com/AldanTanneo/bigints.git"
  },
  "tags": [
    "bigint",
    "cryptography",
    "constant-time",
    "spark",
    "ada2022"
  ],
  "version": "0.2.0",
  "website": "https://github.com/AldanTanneo/bigints"
}
