{"id":13410126,"url":"https://github.com/lkujaw/blake2s","last_synced_at":"2026-05-25T18:32:21.795Z","repository":{"id":215182607,"uuid":"369380175","full_name":"lkujaw/blake2s","owner":"lkujaw","description":"The BLAKE2s hash function for SPARK83 [Ada (1987)]","archived":false,"fork":false,"pushed_at":"2021-10-12T05:41:52.000Z","size":177,"stargazers_count":1,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"trunk","last_synced_at":"2025-12-26T01:28:36.502Z","etag":null,"topics":["ada","ada1987","blake2","blake2s","hash","mit-license","spark-ada"],"latest_commit_sha":null,"homepage":"","language":"Ada","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit-0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lkujaw.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"license.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-05-21T01:23:21.000Z","updated_at":"2021-11-03T00:38:59.000Z","dependencies_parsed_at":null,"dependency_job_id":"c4dda2e0-1bda-433a-9083-3cd2a24c0d8f","html_url":"https://github.com/lkujaw/blake2s","commit_stats":null,"previous_names":["lkujaw/blake2s"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/lkujaw/blake2s","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lkujaw%2Fblake2s","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lkujaw%2Fblake2s/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lkujaw%2Fblake2s/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lkujaw%2Fblake2s/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lkujaw","download_url":"https://codeload.github.com/lkujaw/blake2s/tar.gz/refs/heads/trunk","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lkujaw%2Fblake2s/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33488802,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-25T14:31:05.219Z","status":"ssl_error","status_checked_at":"2026-05-25T14:31:02.878Z","response_time":57,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ada","ada1987","blake2","blake2s","hash","mit-license","spark-ada"],"created_at":"2024-07-30T20:01:05.102Z","updated_at":"2026-05-25T18:32:21.772Z","avatar_url":"https://github.com/lkujaw.png","language":"Ada","funding_links":[],"categories":["Libraries"],"sub_categories":["Cryptography"],"readme":"[![Alire](https://img.shields.io/endpoint?url=https://alire.ada.dev/badges/blake2s.json)](https://alire.ada.dev/crates/blake2s.html)\n\n# BLAKE2s for Ada\n\nThis is a SPARK83 implementation of the [BLAKE2s][1] hash function.\nAs SPARK83 is a strict subset of Ada 1987 (ISO-8652:1987), this\npackage should be usable with any compiler compliant with the\n1987 (or later) edition of the ISO Ada standard.\n\n## BLAKE2s Advantages\n\nLike SHA-256, BLAKE2s operates on 32-bit words, but is not susceptible\nto the length extension attacks of the former.  Although the FIPS hash\nfunctions SHA-512/256 and SHA-3 mitigate the length extension\nvulnerability of SHA-256, they require 64-bit words for decent\nperformance.  Thus, BLAKE2s fills a niche for resource-constrained\nplatforms. It also enjoys a high security margin, as each of the ten\nBLAKE2s rounds is the equivalent of two ChaCha rounds.\n\n## Build Instructions for GNAT\n\nTo compile the BLAKE2s library and executables, you will need to have\ninstalled and accessible within your path copies of [AST NMAKE][2]\nwith Ada support and the GCC compiler built with the GNAT Ada\nfront-end enabled.\n\nOnce the prerequisites are available, simply run `cd gnat \u0026\u0026 nmake` .\n\n## SPARK and Isabelle Verification\n\nThis project uses a combination of the original, annotation-based\nSPARK tool set (search [AdaCore Libre][3] for the 2012 GPL release)\nand the HOL-SPARK library bundled within [Isabelle][4] 2021 to prove\nthe absence of runtime errors.\n\nTo verify the proofs, check the file named `makefile.nmk` within the\nproject root first to ensure that you have the necessary programs\n(including the `isabelle` command) installed within your path.\n\nIf everything is functioning as it should, all verification conditions\nshould be discharged.\n\n## Ada 1987 Compatibility Note\n\nThis package utilizes the Ada 1995 pragma \"Pure\" in the following\npackage specifications:\n\n* BLAKE2S (common/blake2s.ads)\n* Octets (common/octets.ads)\n* Octet_Arrays (common/octearra.ads)\n\nPer section 2.8 of the Ada 1987 Language Reference Manual, \"[a] pragma\nthat is not language-defined has no effect if its identifier is not\nrecognized by the (current) implementation.\"  However, as the pragma\nis merely advisory to the compiler, it may be removed without adverse\neffect from these files should it cause any issues.\n\n## SPARK83 Rationale\n\nFor the 1987, 1995, and 2007 editions of the ISO Ada standard, the\ncorresponding SPARK language tools were based upon annotations.  The\nplacement of annotations within Ada comments has the advantage of not\nrequiring any special support for SPARK on the part of the compiler.\n\nAt the time of writing, the compiler support required by the post-2007\neditions of the SPARK language is found only within the GNAT compiler.\nLike the BLAKE2s reference source code, which targets the first\nedition of the ISO C standard released in 1990, this project targets\nthe earliest release of the ISO Ada standard to maximize portability,\nand for this same reason the annotation-based SPARK language tools are\nideal.\n\n## License and Warranty\n\nLicensing terms and important warranty information for the BLAKE2s\nlibrary may be found within the file named [license.txt][3].\n\nSeparate from the BLAKE2s library, the B2SSUM and B2STEST executables\nare distributed under the terms of the GNU General Public License,\nversion 3.0; see the file [copying.txt][4] for licensing terms and\nimportant warranty information.\n\n`SPDX-License-Identifier: MIT-0`\n\n## Acknowledgments\n\nThanks to Aumasson et al. for releasing the excellent BLAKE hash\nfunctions into the public domain, and the [GNAT, SPARK][5],\n[Isabelle][6], and [AdaControl][7] developers for publishing their\ntremendously helpful [free software][8].\n\n[1]: https://www.blake2.net/\n[2]: https://sr.ht/~lev/ast/\n[3]: license.txt\n[4]: b2ssum/copying.txt\n[5]: https://libre.adacore.com/\n[6]: https://isabelle.in.tum.de/\n[7]: https://www.adalog.fr/en/adacontrol.html\n[8]: https://www.gnu.org/philosophy/free-sw.html\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flkujaw%2Fblake2s","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flkujaw%2Fblake2s","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flkujaw%2Fblake2s/lists"}