{"id":33152923,"url":"https://github.com/apache/incubator-milagro-crypto-c","last_synced_at":"2025-11-15T22:00:37.626Z","repository":{"id":18529565,"uuid":"84534790","full_name":"apache/incubator-milagro-crypto-c","owner":"apache","description":"Apache milagro (Incubating)","archived":true,"fork":false,"pushed_at":"2024-03-21T14:22:03.000Z","size":13281,"stargazers_count":37,"open_issues_count":28,"forks_count":15,"subscribers_count":12,"default_branch":"master","last_synced_at":"2025-10-28T06:26:19.299Z","etag":null,"topics":["milagro"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/apache.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2017-03-10T08:00:07.000Z","updated_at":"2025-10-21T15:13:01.000Z","dependencies_parsed_at":"2025-04-17T13:59:48.712Z","dependency_job_id":"be2b3254-82d7-4c4a-aaf8-dd66686dfc37","html_url":"https://github.com/apache/incubator-milagro-crypto-c","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/apache/incubator-milagro-crypto-c","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Fincubator-milagro-crypto-c","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Fincubator-milagro-crypto-c/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Fincubator-milagro-crypto-c/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Fincubator-milagro-crypto-c/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/apache","download_url":"https://codeload.github.com/apache/incubator-milagro-crypto-c/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Fincubator-milagro-crypto-c/sbom","scorecard":{"id":201436,"data":{"date":"2025-08-11","repo":{"name":"github.com/apache/incubator-milagro-crypto-c","commit":"4ede6268ff821692159526cdb48f7ea48b6580e8"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5.3,"checks":[{"name":"Code-Review","score":9,"reason":"Found 10/11 approved changesets -- score normalized to 9","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":0,"reason":"project is archived","details":["Warn: Repository is archived."],"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Security-Policy","score":10,"reason":"security policy file detected","details":["Info: security policy file detected: github.com/apache/.github/.github/SECURITY.md:1","Info: Found linked content: github.com/apache/.github/.github/SECURITY.md:1","Info: Found disclosure, vulnerability, and/or timelines in security policy: github.com/apache/.github/.github/SECURITY.md:1","Info: Found text in security policy: github.com/apache/.github/.github/SECURITY.md:1"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: containerImage not pinned by hash: Dockerfile:27: pin your Docker image by updating ubuntu:22.04 to ubuntu:22.04@sha256:1aa979d85661c488ce030ac292876cf6ed04535d3a237e49f61542d8e5de5ae0","Warn: pipCommand not pinned by hash: Dockerfile:54","Info:   0 out of   1 pipCommand dependencies pinned","Info:   0 out of   1 containerImage dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 29 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-16T22:54:33.859Z","repository_id":18529565,"created_at":"2025-08-16T22:54:33.859Z","updated_at":"2025-08-16T22:54:33.859Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":284628148,"owners_count":27037491,"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","status":"online","status_checked_at":"2025-11-15T02:00:06.050Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["milagro"],"created_at":"2025-11-15T19:00:46.108Z","updated_at":"2025-11-15T22:00:37.618Z","avatar_url":"https://github.com/apache.png","language":"C","funding_links":[],"categories":["Frameworks and Libs"],"sub_categories":["C"],"readme":"\u003c!--\n    Licensed to the Apache Software Foundation (ASF) under one\n    or more contributor license agreements.  See the NOTICE file\n    distributed with this work for additional information\n    regarding copyright ownership.  The ASF licenses this file\n    to you under the Apache License, Version 2.0 (the\n    \"License\"); you may not use this file except in compliance\n    with the License.  You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\n    Unless required by applicable law or agreed to in writing,\n    software distributed under the License is distributed on an\n    \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n    KIND, either express or implied.  See the License for the\n    specific language governing permissions and limitations\n    under the License.\n--\u003e\n\n# AMCL - *Apache Milagro Crypto Library*\n\n[![Master Branch](https://img.shields.io/badge/-master:-gray.svg)](https://github.com/apache/incubator-milagro-crypto-c/tree/master)\n\n* **category**:    Library\n* **copyright**:   2019 The Apache Software Foundation\n* **license**:     ASL 2.0 ([Apache License Version 2.0, January 2004](http://www.apache.org/licenses/LICENSE-2.0))\n* **link**:        https://github.com/apache/incubator-milagro-crypto-c\n\n## Description\n\n*AMCL - Apache Milagro Crypto Library*\n\nAMCL is a standards compliant C cryptographic library with no external dependencies.\n\nAMCL is provided in *C* language but includes a *[Python](https://www.python.org)* wrapper for some modules to aid development work.\n\nNOTE: This product includes software developed at *[The Apache Software Foundation](http://www.apache.org/)*.\n\n## Software Dependencies\n\nIn order to build this library, the following packages are required:\n\n* [CMake](https://cmake.org/) is required to build the source code.\n* [CFFI](https://cffi.readthedocs.org/en/release-0.8/), the C Foreign Function Interface for Python is required in order to execute tests.\n* [Doxygen](http://doxygen.org) is required to build the source code documentation.\n* [Python](https://www.python.org/) language is required to build the Python language wrapper.\n\nThe above packages can be installed in different ways, depending on the Operating System used:\n\n* **Ubuntu 18.04 Linux**\n\n```\nsudo dpkg --add-architecture i386\n\necho \"add repositories cache\"\nsudo apt-get update -y\n\necho \"install packages\"\nsudo apt-get install -y \\\n     build-essential \\\n     cmake \\\n     doxygen \\\n     parallel \\\n     mingw-w64 \\\n     wine64 \\\n     wine32 \\\n     lcov \\\n     python3-dev \\\n     python3-pip \\\n     gcc-multilib \\\n     git \\\n     rpm \\\n     checkinstall\n\nsudo pip3 install cffi autopep8\n```\n\n* **Fedora 30 Linux**\n\n```\nsudo dnf config-manager --add-repo https://dl.winehq.org/wine-builds/fedora/30/winehq.repo\nsudo dnf install -y @development-tools \\\n    cmake \\\n    libffi-devel \\\n    libasan \\\n    parallel \\\n    mingw64-gcc \\\n    mingw32-gcc \\\n    lcov \\\n    winehq-stable \\\n    libstdc++-*.i686 \\\n    glibc-*.i686 \\\n    libgcc.i686\n\nsudo pip3 install cffi autopep8\nsudo yum install rpm-build\n```\n\n* **MacOS**\n\n```\nruby -e \"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)\"\nbrew install cmake\nbrew install pkg-config libffi\nsudo pip install cffi\nbrew install doxygen\nbrew install parallel\n```\n\n* **Windows**\n\n* install [MinGW](http://www.mingw.org) Please select the **mingw32-base** and **mingw32-gcc-g++** components. Add *C:\\MinGW\\bin* to the PATH variable\n* install [Python](https://www.python.org/downloads/windows/). Either Python 2.7.x or 3.8.x may be used.  During the installation, ensure that the option to add Python to the Windows PATH variable is selected.\n* install [CMake](http://www.cmake.org). During installation, ensure that the option to add the CMake executable to the Windows PATH variable is selected.\n* install [Doxygen](http://www.doxygen.org)\n* install [Git](https://git-scm.com/)\n\n## Build Instructions\n\n#### Linux and Mac\n\n##### Quick start\n\nClone the repository\n\n```\ngit clone https://github.com/apache/incubator-milagro-crypto-c.git\ncd incubator-milagro-crypto-c\n```\n\nEdit and run this script\n\n```\n./scripts/build.sh\n```\n\nor use the docker build\n\n```\n./scripts/docker.sh -h\n```\n\n##### Multiple curves and RSA security levels\n\nThe default build (see config.mk) uses multiple curves and RSA security\nlevels. There is an example called testall.c in the examples directory that\nshows how to write a program to use the different curves etc in a single\nprogram. To build and run the example use this script;\n\n```\n./scripts/buildMulti.sh\n```\n\n##### Manual build\n\nNOTE: The default build is for 64 bit machines.  Either use Git to clone the repository:\n\n```\ngit clone https://github.com/apache/incubator-milagro-crypto-c.git\ncd incubator-milagro-crypto-c\n```\nOr, if using an official Apache release, download the compressed archive, extract it and navigate into its root directory.\n```\nmkdir -p target/build\ncd target/build\ncmake ../..\nexport LD_LIBRARY_PATH=$LD_LIBRARY_PATH:./\nmake\nmake test\nmake doc\nsudo make install\n```\n\nNOTE: When running the ASan tests, make sure to export the following variable:\n\n```\nexport ASAN_OPTIONS=verify_asan_link_order=0\n```\n\nOn Debian/Ubuntu machine instead of executing the *\"sudo make install\"* command it is possible to execute *\"sudo checkinstall\"* to build and install a DEB package.\n\nNow you can set the path to where libs and python package are installed:\n\n```\nexport LD_LIBRARY_PATH=$LD_LIBRARY_PATH:./:/opt/amcl/lib\nexport PYTHONPATH=/usr/lib/python2.7/dist-packages\n```\n\nNOTE: The build can be configured by setting flags on the command line, for example:\n\n```\ncmake -DAMCL_CHUNK=64 ../..\ncmake -D CMAKE_INSTALL_PREFIX=/opt/amcl -D AMCL_CHUNK=64 -D BUILD_WCC=on ../..\n```\n\nIt is possible also to build the library supporting more than one elliptic curve and more  than one RSA security level, for example\n\n```\ncmake -DAMCL_CURVE=BN254CX,NIST254 -DAMCL_RSA=2048,3072 ../..\n```\n\nTo list other available CMake options, use:\n\n```\ncmake -LH\n```\n\n##### Uninstall software\n\n```\nsudo make uninstall\n```\n\n##### Building an installer\n\nAfter having built the libraries you can build a binary installer and a source distribution by running this command\n\n```\nsudo make package\n```\n\n#### Windows\n\nStart a command prompt as an administrator and either use Git to clone the repository\n\n```\ngit clone https://github.com/apache/incubator-milagro-crypto-c.git\ncd incubator-milagro-crypto-c\n```\nOr, if using an official Apache release, download the compressed archive, extract it and navigate into its root directory.\n```\nmkdir build\ncd build\ncmake -G \"MinGW Makefiles\" -D WORD_SIZE=64 ..\nmingw32-make\nmingw32-make test\nmingw32-make doc\nmingw32-make install\n```\n\nPost install append the PATH system variable to point to the install ./lib:\n\n*Control Panel - System and Security - System - Advanced System Settings - Environment Variables*\n\nThe build can be configured using by setting flags on the command line i.e.\n\n```\ncmake -G \"MinGW Makefiles\" -D WORD_SIZE=64  -D BUILD_PYTHON=on ..\n```\n\n##### Uninstall software\n\n```\nmingw32-make uninstall\n```\n\n##### Building an installer\n\nAfter having built the libraries you can build a Windows installer using this command\n\n```\nmingw32-make package\n```\n\nIn order for this to work [NSIS](https://nsis.sourceforge.io) has to have been installed\n\n## Contributions\n\nThis project includes a Makefile that allows you to test and build the project in a Linux-compatible system with simple commands.\nAll the artifacts and reports produced using this Makefile are stored in the *target* folder.\n\nAll the packages listed in the *Dockerfile* are required in order to build and test all the library options in the current environment. Alternatively, everything can be built inside a [Docker](https://www.docker.com) container using the command \"make -f Makefile.docker buildall\".\n\nTo see all available options:\n\n```\nmake help\n```\n\nTo build the builder Docker image:\n\n```\nmake -f Makefile.docker\n```\n\nTo build the project inside a Docker container (requires Docker) you need to build a builder image (once), and then build the project in its context:\n\n```\nmake -f Makefile.docker buildall\n```\n\nTo build a particular set of predefined makefile options inside a Docker container:\n\n```\nmake -f Makefile.docker build TYPE=LINUX_64BIT_NIST256_RSA2048\n```\n\nor in the current environment:\n\n```\nmake build TYPE=LINUX_64BIT_NIST256_RSA2048\n```\n\nTo execute all the test builds and generate reports in the current environment:\n```\nmake qa\n```\n\nTo format the code (please use this command before submitting any pull request):\n```\nmake format\n```\n### Contributors \n\nThe following people have contributed to milagro-crypto-c\n\n- Mike Scott\n- Kealan McCusker\n- Alessandro Budroni\n- Samuele Andreoli\n\nPlease add yourself here if you make or have made a contribution.\n\n### Making a Contribution\n\n1.  [Check for open issues](https://github.com/apache/incubator-milagro-crypto-c/issues) or start a discussion around a feature idea or a bug by sending a mail to dev@milagro.incubator.apache.org\n2.  Fork the repository to start making your changes. Please use the master branch as a basis.\n3.  Write a test which shows that the bug was fixed or that the feature works as expected.\n4.  Make a pull request with a reference to the issue\n\n\n## Crypto Notice\n\nThis distribution includes cryptographic software. The country in which you\ncurrently reside may have restrictions on the import, possession, use, and/or\nre-export to another country, of encryption software. BEFORE using any\nencryption software, please check your country's laws, regulations and\npolicies concerning the import, possession, or use, and re-export of encryption\nsoftware, to see if this is permitted. See \u003chttp://www.wassenaar.org/\u003e for\nmore information.\n\nThe Apache Software Foundation has classified this software as Export Commodity\nControl Number (ECCN) 5D002, which includes information security software using\nor performing cryptographic functions with asymmetric algorithms. The form and\nmanner of this Apache Software Foundation distribution makes it eligible for\nexport under the \"publicly available\" Section 742.15(b) exemption (see the BIS\nExport Administration Regulations, Section 742.15(b)) for both object code and\nsource code.\n\n\n## Disclaimer\n\nApache Milagro is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapache%2Fincubator-milagro-crypto-c","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fapache%2Fincubator-milagro-crypto-c","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapache%2Fincubator-milagro-crypto-c/lists"}