{"id":23261187,"url":"https://github.com/mjosaarinen/mayo-py","last_synced_at":"2025-04-06T05:44:29.390Z","repository":{"id":258768767,"uuid":"875669636","full_name":"mjosaarinen/mayo-py","owner":"mjosaarinen","description":"Simple Python Implementation of the MAYO 1.0 Multivariate PQC Signature Secheme","archived":false,"fork":false,"pushed_at":"2024-10-22T05:17:11.000Z","size":31,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-12T11:26:25.360Z","etag":null,"topics":["mayo","multivariate","nist","pqc"],"latest_commit_sha":null,"homepage":"","language":"Roff","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mjosaarinen.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}},"created_at":"2024-10-20T15:34:05.000Z","updated_at":"2024-10-23T07:05:23.000Z","dependencies_parsed_at":"2024-12-19T13:30:58.274Z","dependency_job_id":"3afdbe58-acdc-47f4-9205-dff4d89cb783","html_url":"https://github.com/mjosaarinen/mayo-py","commit_stats":null,"previous_names":["mjosaarinen/mayo-py"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mjosaarinen%2Fmayo-py","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mjosaarinen%2Fmayo-py/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mjosaarinen%2Fmayo-py/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mjosaarinen%2Fmayo-py/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mjosaarinen","download_url":"https://codeload.github.com/mjosaarinen/mayo-py/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247441005,"owners_count":20939235,"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":["mayo","multivariate","nist","pqc"],"created_at":"2024-12-19T13:30:49.321Z","updated_at":"2025-04-06T05:44:29.362Z","avatar_url":"https://github.com/mjosaarinen.png","language":"Roff","funding_links":[],"categories":[],"sub_categories":[],"readme":"#   mayo-py\n\n2024-10-21  Markku-Juhani O. Saarinen  mjos@iki.fi\n\nPython implementation of the [MAYO signature scheme](https://csrc.nist.gov/csrc/media/Projects/pqc-dig-sig/documents/round-1/spec-files/MAYO-spec-web.pdf) which is a candidate in the first round of the [NIST PQC Signature On-Ramp](https://csrc.nist.gov/Projects/pqc-dig-sig/round-1-additional-signatures)\n\nThis implementation supports all four parameter sets in the specification, and also the public and secret key compression methods. Here are the basic parameters and the public key, secret key, and signature sizes in bytes.\n\n| Param  |   n |   m |  o |  k |   PK | SK | Sig |\n|--------|-----|-----|----|----|------|----|-----|\n| MAYO_1 |  66 |  64 |  8 |  9 | 1168 | 24 | 321 |\n| MAYO_2 |  78 |  64 | 18 |  4 | 5488 | 24 | 180 |\n| MAYO_3 |  99 |  96 | 10 | 11 | 2656 | 32 | 577 |\n| MAYO_5 | 133 | 128 | 12 | 12 | 5008 | 40 | 838 |\n\n\t\n##  Implementation Notes\n\nThe implementation is self-contained in file ([mayo.py](mauo.py)). You will need Python3 with AES and SHAKE crypto primitives; try `pip3 install pycryptodome` if those are not installed.\n\n##  Running Known Answer Tests\n\nThe known answer testbench ([kat_test.py](kat_test.py)) can be executed via `python3 kat_test.py` and checked against the provided KAT checksums.\n\nThe [kat](kat) directory contains various test vectors extracted from the NIST submission package. The `*.rsp.1` files just contain the first entry of each response file. Due to the large size of keys in the KAT files, sha256 hashes are provided for 1, 10, and 100 entries in files [kat1.txt](kat/kat1.txt), [kat10.txt](kat/kat10.txt), and [kat100.txt](kat/kat100.txt), respectively.\n\nThe KAT tester computes sha256 hashes of KAT output in the same format as the NIST .rsp file. By default we compute first 10 vectors, but you may modify the `katnum` variable in [kat_test.py](kat_test.py) to produce hashes of more vectors.\n\n**Example:** Print the hashes of first 10 test vectors(default):\n\n```\n$ python3 kat_test.py \n# 10/10 MAYO_1\n40965966a084bba4e6be63c355800052d761d27b71238e7d2e8ee3f888019056 MAYO_1 (10)\n# 10/10 MAYO_2\n4f1958017f0d3f3449c5cfe47f362de584b5a0a2e519bcde58646ee82e97865c MAYO_2 (10)\n# 10/10 MAYO_3\n850146603532ecb4d62ef757579f94f705ca70c8db8e01163219d42e3a3ed109 MAYO_3 (10)\n# 10/10 MAYO_5\n83492419e687113a5cd66c03edc2b9f180a58424501f2ea7da805123f9d8f4cf MAYO_5 (10)\n```\n\nWe can observe that these are the same as those stored:\n```\n$ cat kat/kat10.txt \n40965966a084bba4e6be63c355800052d761d27b71238e7d2e8ee3f888019056  PQCsignKAT_24_MAYO_1.rsp.10\n4f1958017f0d3f3449c5cfe47f362de584b5a0a2e519bcde58646ee82e97865c  PQCsignKAT_24_MAYO_2.rsp.10\n850146603532ecb4d62ef757579f94f705ca70c8db8e01163219d42e3a3ed109  PQCsignKAT_32_MAYO_3.rsp.10\n83492419e687113a5cd66c03edc2b9f180a58424501f2ea7da805123f9d8f4cf  PQCsignKAT_40_MAYO_5.rsp.10\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmjosaarinen%2Fmayo-py","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmjosaarinen%2Fmayo-py","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmjosaarinen%2Fmayo-py/lists"}