{"id":28710796,"url":"https://github.com/arm-software/aarch64cryptolib","last_synced_at":"2025-08-17T13:12:40.993Z","repository":{"id":45247311,"uuid":"194876610","full_name":"ARM-software/AArch64cryptolib","owner":"ARM-software","description":"AArch64cryptolib is a from scratch implementation of cryptographic primitives aiming for optimal performance on Arm A-class cores","archived":false,"fork":false,"pushed_at":"2025-05-27T09:23:15.000Z","size":9534,"stargazers_count":36,"open_issues_count":1,"forks_count":20,"subscribers_count":10,"default_branch":"master","last_synced_at":"2025-05-27T10:34:33.992Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ARM-software.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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,"zenodo":null}},"created_at":"2019-07-02T14:13:27.000Z","updated_at":"2025-05-27T09:23:19.000Z","dependencies_parsed_at":"2025-05-27T10:34:35.892Z","dependency_job_id":null,"html_url":"https://github.com/ARM-software/AArch64cryptolib","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/ARM-software/AArch64cryptolib","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ARM-software%2FAArch64cryptolib","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ARM-software%2FAArch64cryptolib/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ARM-software%2FAArch64cryptolib/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ARM-software%2FAArch64cryptolib/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ARM-software","download_url":"https://codeload.github.com/ARM-software/AArch64cryptolib/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ARM-software%2FAArch64cryptolib/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259884525,"owners_count":22926446,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":[],"created_at":"2025-06-14T21:08:16.286Z","updated_at":"2025-06-14T21:08:16.872Z","avatar_url":"https://github.com/ARM-software.png","language":"C","readme":"AArch64cryptolib\n====\n\n# Purpose\nAArch64cryptolib is a from scratch implementation of cryptographic primitives aiming for optimal performance on Arm A-class cores.\n\nThe core concept of the AES-GCM implementations is to optimally schedule a \"merged\" AES-GCM kernel to make effective use of the available pipeline resources in existing CPUs.\n\nCurrent optimisation targets:\n\n1. LITTLE (Cortex-A53, Cortex-A55).\n2. big (Cortex-A57, Cortex-A72, Cortex-A75, Cortex-A76 and Neoverse N1).\n2. bigger (Neoverse V1).\n3. biggereor3 (Neoverse V1).\n\n# Functionality\nThe library currently supports:\n\n* AES-GCM\n    * Encrypt and decrypt\n    * 128b, 192b, and 256b keys\n    * Bespoke IPsec variants which make some domain specific assumptions, and merges UDP checksum into AES-GCM decryption\n\n* AES-CBC\n    * Encrypt and decrypt\n\t* 128b key\n\t* SHA-1 and SHA-256 hash\n\t* Chained cipher + auth\n\n# Structure\nAArch64cryptolib consists of:\n\n1. A header file (AArch64cryptolib.h) with the interface to the library\n2. Top implementation files (AArch64cryptolib_aes_gcm.c, AArch64cryptolib_aes_cbc.c) which provide several C functions supporting the library\n3. Several asm optimised functions (in AArch64cryptolib\\_\\* folders) which target big, bigger and LITTLE microarchitectures, and are included inline in AArch64cryptolib_*.c when the pertinent compilation flags are set\n\n# Usage\n## Source files\nUsers of AArch64cryptolib have to include AArch64cryptolib.h in their source file and use the API described in that file.\n\n## Building library\n* Native compilation with GCC basically need _make_\n* To cross compile, use CROSS flag and point it to your cross compiler. e.g. _make CROSS=aarch64-linux-gnu-_\n\n## Compiler flags\nSelect one of the code paths optimised for big or LITTLE CPU implementations:\n\n1. OPT=little\n2. OPT=big\n3. OPT=bigger\n4. OPT=biggereor3\n\nAdd extra compiler flags or override default flags:\n\n* EXTRA_CFLAGS=\n\n# Requirements\nThe implementation requires the Armv8a _Cryptography Extensions_.\nThe biggereor3 implementation option requires the Armv8.2a _SHA3 extension_.\n\n# Restrictions\nThe choice of AES-GCM implementation is done at compile time.\n\n# License\nSPDX BSD-3-Clause\n\nSee the included file 'LICENSE.md' for the license text.\n\n# Original Authors\n* Samuel Lee (AES-GCM)\n* Zbigniew Bodek (AES-CBC)\n\n# Maintainer\nOla Liljedahl (ola.liljedahl@arm.com)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farm-software%2Faarch64cryptolib","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farm-software%2Faarch64cryptolib","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farm-software%2Faarch64cryptolib/lists"}