{"id":49,"slug":"quantmrkt-pqc-lint-action","name":"PQC Lint GitHub Action","author":"quantmrkt","description":"GitHub Action + CLI that scans code for classical cryptography (RSA, ECDSA, ECDH, DH, Ed25519, MD5, SHA-1) and suggests PQC replacements. Supports Python, JavaScript, Go, Rust, Java, C/C++. SARIF output for GitHub code scanning. Open source, 43 tests passing.","tags":"[\"GitHub Action\",\"SARIF\",\"CLI\",\"Python\",\"JavaScript\",\"Go\",\"Rust\",\"Java\",\"C/C++\",\"CI/CD\",\"Linter\",\"SAST\"]","license":"Apache 2.0","framework":"TypeScript","parameters":"N/A","downloads":0,"likes":0,"verified":1,"created_at":"2026-03-26 03:20:26","updated_at":"2026-03-26 16:38:48","source_url":"https://github.com/dyber-pqc/QuantaMrkt/tree/main/tools/pqc-lint-action","source_platform":"github","hf_repo_id":"","ollama_name":"","category":"tool","latest_version":"1.0.0","version_count":1,"signature_count":3,"risk_level":"MEDIUM","risk_score":45,"versions":[{"id":49,"model_id":49,"version":"1.0.0","manifest_hash":"E4C4FAF8E5E002FA420B","file_count":40,"total_size":88297,"r2_manifest_key":null,"created_at":"2026-03-26 03:20:35"}],"files":[{"id":2748,"version_id":49,"filename":"LICENSE","sha3_256_hash":"abdcf10f6588f1abfa23a55fbef23267a620b3c67695e93577af0a1d7f881640","size":11325},{"id":2749,"version_id":49,"filename":"README.md","sha3_256_hash":"0af835d6678c402b0a23fd431c0113ea52513f3cc4e1942cb59627bda6acb3d8","size":11037},{"id":2750,"version_id":49,"filename":"action.yml","sha3_256_hash":"78d22c30984135a079dfd1059859174a66484d575c956be8f4b19d43936912c6","size":2959},{"id":2751,"version_id":49,"filename":"examples/.github/workflows/pqc-lint.yml","sha3_256_hash":"df324b118d4308a078821c4b0c73af60b8ba6e390298f713b6e26c56e339cb0b","size":545},{"id":2752,"version_id":49,"filename":"examples/vulnerable_sample.py","sha3_256_hash":"d9310f4c618bb62d6e08334361a84be1211413014c2431e927f3e5c7bbd6fcbb","size":849},{"id":2753,"version_id":49,"filename":"pyproject.toml","sha3_256_hash":"e12e533ce3a42d50506e3ec869ed5a07e856799528980393de6280f88f9bd232","size":1328},{"id":2754,"version_id":49,"filename":"src/pqc_lint/__init__.py","sha3_256_hash":"53f2b71e5d61b2939acd6a6a3c726e948476bf748c0e6d9f8e36b42ca8949da2","size":489},{"id":2755,"version_id":49,"filename":"src/pqc_lint/action_runner.py","sha3_256_hash":"a5a8997b5c30e554bea3c61f8a48e76289b059282a9621d215459c531a16d5e0","size":2919},{"id":2756,"version_id":49,"filename":"src/pqc_lint/cli.py","sha3_256_hash":"a50bfbcb3f4d07a9f1cf696cd01c3fe770a44829c06953d3335cfaeb91e5c80c","size":2814},{"id":2757,"version_id":49,"filename":"src/pqc_lint/findings.py","sha3_256_hash":"0f962c32e9a2c1c82ae7bb27e76c71ed5bbb3588d278f71e9f3ad0417ef052bc","size":3897},{"id":2758,"version_id":49,"filename":"src/pqc_lint/patterns/__init__.py","sha3_256_hash":"59936efdb068ae5fe8a6dfb1c3a13beb7b93958468c4032ff11ddec4fdddb2a8","size":871},{"id":2759,"version_id":49,"filename":"src/pqc_lint/patterns/base.py","sha3_256_hash":"593a700b8a6e4b8ae1e580d430da5ca80238d87d22c86833a1a683a36312e20c","size":2466},{"id":2760,"version_id":49,"filename":"src/pqc_lint/patterns/c_cpp.py","sha3_256_hash":"0fb41c93932b2d951217c73ea8ff806020654a8b78478072be3670b03cae0e49","size":1141},{"id":2761,"version_id":49,"filename":"src/pqc_lint/patterns/go.py","sha3_256_hash":"c03784fe0d71587ec2a02ec6d8eaae8c55b247fed6598b1ba2e6b6666d31f70a","size":1209},{"id":2762,"version_id":49,"filename":"src/pqc_lint/patterns/java.py","sha3_256_hash":"26616528f084aef78d64d6fa2a6fa1032929011af4a17ca1a4aff707745354c0","size":1492},{"id":2763,"version_id":49,"filename":"src/pqc_lint/patterns/javascript.py","sha3_256_hash":"db4890159aa95d240a1f937567140bada7b52e939a39f29c7a82d9338bd8c882","size":1797},{"id":2764,"version_id":49,"filename":"src/pqc_lint/patterns/python.py","sha3_256_hash":"bc7384ddef553f4a778e767ad62d889046de87fbaf7004330b4a2db894cd15dd","size":1927},{"id":2765,"version_id":49,"filename":"src/pqc_lint/patterns/rust.py","sha3_256_hash":"9e6a9a7e58f8e5cc232a9a32ae41a045ce107c1a7de334202a696dde8a5b834f","size":1051},{"id":2766,"version_id":49,"filename":"src/pqc_lint/reporters/__init__.py","sha3_256_hash":"0042e3ace9d270fbbed18e3d81d2b32beaeff96ea43ff2440e8c3ce3be83633c","size":579},{"id":2767,"version_id":49,"filename":"src/pqc_lint/reporters/base.py","sha3_256_hash":"11b9cf50aad59c159d0f7b5338ab0323c2fb5a05a270470953df79e7a6826dec","size":273},{"id":2768,"version_id":49,"filename":"src/pqc_lint/reporters/github.py","sha3_256_hash":"ee506eb0d93af3bde7d896a64130781304776884078370adfa1abc16c979295c","size":1559},{"id":2769,"version_id":49,"filename":"src/pqc_lint/reporters/json_reporter.py","sha3_256_hash":"56b42e302bf11e7c8cd8707b7cd86e34d19be514874c36801573c04dcfac318e","size":283},{"id":2770,"version_id":49,"filename":"src/pqc_lint/reporters/sarif.py","sha3_256_hash":"58dd6bf3642b0b1152292097289dc645d1460cc4c94c881bee03305787a8d0c7","size":2910},{"id":2771,"version_id":49,"filename":"src/pqc_lint/reporters/text.py","sha3_256_hash":"a2ed1a06a6ab982f4345e46387314adcba8ac07ef8c5461e4f9c0a7a7addd92a","size":2966},{"id":2772,"version_id":49,"filename":"src/pqc_lint/rules.py","sha3_256_hash":"ef50477656e98ce4509ad1087f170bd1978b93dda6fcf00f9994ef6e06cd1f68","size":5079},{"id":2773,"version_id":49,"filename":"src/pqc_lint/scanner.py","sha3_256_hash":"2f4d47197ed0d34e62515c5a75b08567d3ae794755cc495019b3fbd803a10571","size":3871},{"id":2774,"version_id":49,"filename":"src/pqc_lint/suggestions.py","sha3_256_hash":"67211777f7d55531a65a6468d292a24a1cd34d832f74bd643ae29be229b89da2","size":3061},{"id":2775,"version_id":49,"filename":"tests/__init__.py","sha3_256_hash":"a7ffc6f8bf1ed76651c14756a061d662f580ff4de43b49fa82d80a4b80f8434a","size":0},{"id":2776,"version_id":49,"filename":"tests/conftest.py","sha3_256_hash":"6837a50ed0fca901f9c1863efa950ad10289c31fb682afdeb37c2917545b6323","size":717},{"id":2777,"version_id":49,"filename":"tests/fixtures/clean.py","sha3_256_hash":"fee09caf09ce12b95265252ea455ad0c3d71c710ea25d4f99b1063bfa982890f","size":108},{"id":2778,"version_id":49,"filename":"tests/fixtures/vulnerable.go","sha3_256_hash":"440ca2e6413dcf58436ad565db4d12f78ca2b655f3e0fe2bc386d9f2848b0307","size":258},{"id":2779,"version_id":49,"filename":"tests/fixtures/vulnerable.py","sha3_256_hash":"b03d63f290d882003bd7972f236ff03c493f5e8747607b0503fad60230c92d1d","size":456},{"id":2780,"version_id":49,"filename":"tests/test_cli.py","sha3_256_hash":"c756d53555dd907e158b20f8c312257a9d2224bb1d2fc8bac6cb382de8e58850","size":2384},{"id":2781,"version_id":49,"filename":"tests/test_findings.py","sha3_256_hash":"30b1b27f3b999a6d918c50ea4c26d167ffd852bbecd06fdb8e662560669d6da0","size":2830},{"id":2782,"version_id":49,"filename":"tests/test_reporters.py","sha3_256_hash":"7f8b5b70f1e9e6a13c2c636197c6fa40a15865e20fc89215920269f3e15fae85","size":3688},{"id":2783,"version_id":49,"filename":"tests/test_rules.py","sha3_256_hash":"08962a6f5d318a1328af2a8d071fc4ebdb67e6f6a43026c35d9490fc2359c7f4","size":968},{"id":2784,"version_id":49,"filename":"tests/test_scanner_go.py","sha3_256_hash":"143abad1a1facf0275859a05af5a38d0090d091a10e9cf0d8bfc290ca048613b","size":1444},{"id":2785,"version_id":49,"filename":"tests/test_scanner_javascript.py","sha3_256_hash":"03cd5655d644dcf625c2499b1468311012ed6a5c494ed4f8658aa03073b4e33e","size":1227},{"id":2786,"version_id":49,"filename":"tests/test_scanner_python.py","sha3_256_hash":"c5f93cda0ef1155b8d5cff75a6ecf412caa301f578a1dedcd1bbcf92316956fa","size":2904},{"id":2787,"version_id":49,"filename":"tests/test_suggestions.py","sha3_256_hash":"7e1817d56e6803e1e6039846d9e585482a80f577de2088d3d3b08f617b1a0b64","size":616}],"signatures":[{"id":94,"version_id":49,"signer_did":"did:web:quantamrkt.com:tools:signing","algorithm":"ML-DSA-87","signature_hex":"c955667788eeff00","attestation_type":"creator","signed_at":"2026-03-25T10:10:00Z"},{"id":95,"version_id":49,"signer_did":"did:web:quantamrkt.com:verification:primary","algorithm":"ML-DSA-87","signature_hex":"d066778899ff0011","attestation_type":"registry","signed_at":"2026-03-25T10:11:00Z"},{"id":393,"version_id":49,"signer_did":"did:web:quantamrkt.com:chain:authority","algorithm":"ML-DSA-87","signature_hex":"5e955f799cb9081afc24a74edc2926577ba80594b1f1db0c4e2f1e23d9aa94140ebc3afe2d491a13948f78dcf441f7ca35a15719f3c1784abff775b06259f81a576f2ebe869cfc353104c2424dc4a2ee31e7d30fff10d077678ff5aa9ce5ef6de95beee1266658e83fb21361855f40aea4e9f5de59d6318b0c995eebbde13d893716149645522f70d689625c66289e1a795b2abc2e2067ce1f654df4c405f3abe19bec4f46ded60ff00ec3df16863e9a2bc33ed3440a486264f6f9466191bfa5f1f618fb2b4be3d41b7c2caa07ea07eeb0fbea748c6b19a842ccec02344a9538353d475ef1f7cc6de32b2bb634ca1bcc38ce2cdb24c8504e92a40bf216190a054167a53322a55ded0366ed36d3cc33196b0796d9750bf01855a4e2e2574f8f12455aa3352d71d1bb45f558770331d157d46b8e855f88a71b5671f5673a7cf1f0e95d333873eb70e83551dae089180a3a4c78eb9e8a04699fe9c66173447ae9f30554356b904913fa3756b2f9444df4c35cf1f18ba3b85479350e48ba3a0bb988a7ddeef544cf7cbc082b5e5a92138cba25a96e581c714a8000963ff91a18ce0adb0c64265764493338e43545906ffdf12661cb79e998e384fbde0522585d74953737b307f7242ad114319fa32b4d0960ffb56d3908cf1d74412278b1da24d77e142b11053e28293ef673a52a9d71f9b87a19304ddaaacf1c83b46b086086690baddd926baa9b1d5545602d9c0d59cc08de6f8e6afa2813a34b434f6433ba08cba71cb1b8a03ef184672c6eaa3e39f5932829594406cebcbb7bd8dc05d49b6bfe61288147c91dcde4f8b372c9879a5ab34133f050785da609091d8b2deeead3cc5d2f800d9b862677d0e0acf01eab15c0622b00a9cf05eb6b73e237b6146dfa0e75b51ee225b40553309e41b285b7d94c59f61000096620c2e61a9741fbf621067fe01aafdf37eed8f27628216f8393039fae10f7ac7df7681a524a716b302f573f0470a5c885491153845c300b3a37c139af237482f5655e432bec8f686b23140a753fa05a4722b073d8ead29b4ffdd64de71a862cc3b479756ff567329576389cfa0d7218185f434826d7387e63e2bb1c4413ceb392d1b0cb87a2c6e0a76024c218c696cc26e47394f78b5b25ba0a7680585634a40e231fe0436af756b052e02254f4f2c0f0121482156f5fa9650802b207f59af5407f2a7252f4e50149db970d6dc2908ad792cc4d7831d25c45d4354b48e89bab5280bbd499ef6a4b68881a7e7de9b2fecaf59b0573c890a857c4e9d2fb1b8059d9012014a5b183f5ecadb697a4432f614fbdd7410e54ce58190bc19cb2d1d18f6d26123edb607a37a2d848bfc461cadcaf5bd17ecebd1e8e4d71310f4a2a4e0bc0c124479b77850da2caca4c68e3a140f5368a5eb31f5a3ec836dff623fd51559f590660e6f9fa798200aae487372b2c23e99a50d8a1ca9b98c883f371b25790a221e3fa0119ce1829a9d41e88562ec6bfc9af7ed31aa606bda0ab1e163dd6d26c3523ceb33c1430b5f607d28766f2dc0074a35305d8f594c49037ece7e556cfbed125c57e3b7b7c1b1ac7771810367e951bd587ad3b8a27fa50d3f28896ac3f016b7de6d0b410e73b5d1b0491e05b6336602d9e68993c9d5171b65ddfc335b1cbb85aa2b07cd85c88ef55aa99e63160353115d5bee4ad80d77f04a953cfa01e38e678976adf103fa98a5dde63f4ba75cd64cdf5e9e13e65979f03e2dc5210789cc03363948bfb7f3958b53b37953941755c5d9b6dab8c7ad15a61534606a328a9a65ec556942c5a1ee95ecd24e21931778d3d8fadf661a2244fea55270363d6153237326405a9c1d3dade52906ee5043003df21ed69707986327b51fae0458d221656cdaec4239a7fe845a40ae3a70fdfd8ea0863668522cfd36c6ef1bd3ded4a9e11a9dc5f78262aa0d88152dd6b17f155b78e06749ad13469b07466d866e3d26a884ef504e48a1d3ba16c0fc43c1a3b2e207c18158ff4ea4d0c5c7acc32e527fe3017ee5ed181deb8fa2b0db9ffc961113e876f4b344751593b2e76cb4c93145b23a00c1e8be0418dba46308e289f6d51d57108c4638dbf88c04f69d7b29d6b240889f5e1100c25a2087bfd904890b4319b5414fa90a52d8012283bfe2398ad7173cc20c223caecb1687b31ca0e2ca532ab02deb7ce3ea3d3ab74346597fb6d61e00d9704cbfa27dc5ade0baab730b76efc11403ef6c7c4db96c06e656867f5c7f534ed4f9226b9c8dd033735da4fff069ebe03f01eabc4ef471c0df78e3cc7621c997a8624dc7172d73dc102ed0185e3c42883c69a72efb812689a9cc15aebd78ca4ccddffed872b2ba8a4c01f1f195776535af688f429982f8c5c24097e5b8165c31089c37767f2b4d9f491053375abd6cab994745561b699f77f5cea994c4b45e791c5a81196724bdc535ab93d69d0006a9e01df796fc9b2a5b00775a9332241fecce6a87fd7dae85dc5b7534bf35a73ef362d4b1da0b521afdb51c08023e72c335cf602fb1e0d4dcda887debe56efa88fac3cca523393a553e3f5b8565467710064c9819d4de33f6ea1eae52401d95da7d49d765428945c76dea3e61aaf7d93ad037c13ba3c4c547a094f49145177cde36c27e32ca2ec3e53e8b9c87eb5ddfabd2a642f3f001a386d4e1277ef48bd676dc5cfdb8cca091e3ab16410a53611d6dc22bfd56b4925c7d424bab12cb6a97af24895963a5eaf599fe0b06eee89ebf7b91e56b5a90607fbfe47a2c80e48082b9f2a149bbd73ad72ab181298c6ac0b3fcb1aa3379f4b2f520d7546f44bb28fa4f7ea3ccf05e5c0b1e6541ce2a9d7aaa1e6e415f9360ba07b9c89c6b3d5fa86291d0219664bbca05b9721c8145df78ba5c5d02e6617a3b1b5ba22e2540d8c67eaa2134771e78ef7651933f1bdbae8dc8499a9878111b2af90e480da5e3c1d8152f29ec32b39793e83c31979ef2d341c5f3f243f1aac4667eb015d664907dad1eadaf1786babf6aa00a0e9bd713539df1b68aad7346977aaa1e5552d442dae6490774fa12e595472ca80d7f63590e180accd5d7986bb557940c40d1cff269fa17e2efb3d920d54c2d0f6646cc018a2b24f3340919e84fd8d73a9af93d5ca29b3b10e7852dcae7c1f6581258a4c4b1e4ad232739420e8316bbf648a74dace3c2a632d94e926d919036bf86864a5f4a50c8776445b8aa9ba687e85fea81232b3456f5937fa56846dfa461d15e35b4e9cc5527ac68b1f2416901072cbdbfbbd345582400434f02c28f399dff043703643523c1b0364b1d7513fd35d2271441dfcfcc319322af64b5ba6c1d84b3a19ab9e5e6052ce8175a5518faa81d06ca2fd958c02dfdcc9d99c2b8c5e05fff3535f30642787b2d30dfd880474f8bfcddfb57a3ce64b4d7ee2ff904f76897d2a7c53f67b26d323af9dcf745864d77feaa61d68f2bfef5ac716faf080dc9b74267e2895830d4daf8dc52533cf5088008915ffa43a8712e49aef48d10d5060facac1eb9781cdf0c0382d42054b46bbf4fe27254fe0a9bc53774d76392c96f3e77ef1f77272863a306d47490ce2adeb28cfc0be960e1177050a6431a7bbcc4a79209d0832317667c141fd96530a4fd018cfd38559a40a43e77c8d00f514654faa7bf2eda81d1dff002233b3a37e5f8517f51c67a0790963209625e79ab3c9fea2584023a59004d2aab74bf0d391e4be1f16526b22bf70d76527a6907cc588dcf50513aaee3f927402f5b1023b0711e96bd98ca7bef5967a904502cc5ec9bb467bdad90acbe5eb4c973f6c8f99eb39de1dc09774c1222a4a50db596c3c601a0907b2623fe43d725b22729ceb16014c83fbabd4caf0759a491140135e76b9dfea742883d5940dd153c3df72e5877d6a1f421651d12451f1064e397b604e9d7984d305044221bbc22c20fe9cadfd3f63d58b4c821e367b7104d86d7a025630546491c4329ba9b356a3585ae6a8f8f98e6742a33f479e75864b8d195810e1d2ab322b3656e3118efb37f4814213ea984752a99b6d2e340057a81633c4abb3c8e06823af1e92fe8f0dfd944869920e576086774c2f2cf702313d63fbc790f1afb518a709d17c5d6f0c7683feb1aa3086e6524d2ac9423f9feb4ea99a5ab399e4b007fc9db0230fa8f8200baf4a8ccaca955df6b8c4327d79c4afc6849edf05b6b5584c5ac4e3d967b7dbfb0af81dc5ffdd34a0b7c66f9319bd19c182509cadee57b4e4ea54306942e6ef2f83e988add26aea11ab178899e0243921b6b2e1b2159c240a45a3d3243e4b0122e74f18fb6b5c6f751618f9087962c624453990b8605068320d5e8dc004440d20c9ef2665da22851eb812919028b6464ffe77e91b9b96d8ffbec37ea4c7489772a410176b3c5179fcd050d29458f0dd71d7a01c995511875a8e02cb6840f7085268c8a2887abfe15cd892b2e7bbbbd23c5629b358d3be2ad54c25211de3715e045acf0af3d4e4826e55b00fd19b43ff23698308f575e3fdf9e2d1b036f4a3cbd7957d2da94255f55746e76ec30881ec2a3c4bc29908987edabe0c19f65ce06c747f1e1c3ad413b73c7f3ac844f290b405f09c42943e3269ea052de075671cc19fee5fdbced28b3994e49e3ab9394cf669e37134f715289605d729d82e8b80d7217a828bc79cd8a16481110fd4236672121846eea8beaac26471284f60a40cf1141c5fa75e47112d10635a610279643cd2c76391c16a52491e11c1711bcca9ea439c5bde5731f1e0193c2e91b85049169bd11ac3230a6b6e9589161eb5d1b48711a3757fc1e5de4bd38bd286cb974a33d71fd66a58c2a20449b9984d327a1022aa300aaea05d60e2060c8274d7a1dea0829cbbf83783a70e9437a3abb0dfcd6bdd84867272fd46d8d44be5517dbdb85e5a679986235b3d4aeedb0ecbf0aa85f6fe0fc0b8c3750737161493c854b78ba608a581171545be725cd5a59e392ad9dbc6c78f1a58c062e694bb4b68c3493c4f6f44f75f332636059f44b6624898c998538ef920e74579e9f742d2930c89ea929be691b34b175c7dc99af92194b1f732cc241d08cb22257d12d45320d2cb7a649b152de715203a807f3a87e05fc5c6ee58a9c9bb3447c283d2f595acded990cbb0571802616519757550c5e14051285196f871d58c095e2b13a5e04b5cb6457328fff3d904b4056073042534c5e892a95d8123ebeedf09e5769b195d8d0bd8d95f1554443b1dd0b682e812f7eb15c2377ff6d9c9691b0440703b49bbf6ce9d9bfad3f7a3a95c010e6f919440f0000e8be4a99f2c21670ef601588d699bad6256940c2a162a6594961ba2b6cf2038ba93a5ebd187502b2c3dea7f1be42e2acebbd1c31b0d274edbf58f2ffd530e3bf703585ce2be9a2ebfbe114dbc17792fc6ba2e2637737daf3997eb4e2b40863a5d4b55ceb0d2074c53874e9ccc810888876edffee4f9036c1bd86ef0acc1fd61760f775d1ccdea12c17c920f58114af86762d10ca01c265c1b88df61cecb6aec44e8f9fc23fc245c07b9cf8b823dbc56f5f3bf512a84c452d6764e002ac6b8790b31da49f19036b58936a1cd1cc71255713d35ba58855dd8a7f1b573a7230191a5e868325d289dc462a319894ae2698de825290e83adf5ae8b5830fef492a9319d21cda1598b1194177b6853bbe4476c55f4d51835eb64bf5d81924ab06489cce8ba2589a4b3203bba1bace17da546799f5ece919d1433a56d5726873b0f4208342331069b8c178561bcaf73fd11186b9ab671269036d10a5acdfde4f5f6a84074685112bf22337b86bd681363bb883b57944aec45e67ac389b7682b9f7155d172949fbeea8643d04589a564c238be6df2d75a8ed257a41d96dd02c39fccf30718f7ef8ac3c335cdc8b00a1cdb605c1e46e147733b39a9bc4a64feb89d6a8edb2335e43ebbaf624f0bf68e0d9806e7a6aeb70c0fa7714bf3a5baf4038f15448bf17f09a997ebb88f68cb85fac2b22afc6ac5f202562aebe261aad885f7278a985e7e089463dfa1fd79926d0dd35253b640cee1c33b8881310691dfa4a098c0d526a536f16b130817b6d724527c7955fdfe4f917acc8223434fce6d38551d2b6de44909255b50a55c43079665569edd2831628b4e0e166ab072804c52189155c8df157cfec3c556fbcc577c3e0a274f97228fd0b4670920e637670f6b9e60f236ebb472f70186db94e2a5ed38b7eff0013bd3da7da4fc733e2cd25fb814158f5088cdf4ac804da0e3fcdb49144133e50ddb880ddf24c10da49365948710ffbc20da5366e67d0eda12d30679f454a41598aae3a8e588c404cc80c2d78d2e5472f5afaa110ef2d24c1fe58e4ba6aec0d9663713e7006d9626be771fa50d0ee985ce076c489ff8eee4e23a20ad93918f4c4b93fa3e2b1ee9672dc421aa46f1a7fdff0bcd537da4ae6063fc1549777dc4c5d00821709ef01a626c6e83aec0e1ee0b364f6899a7afbccfdff70420588da8bcc2d1184c5e8d960e618fb0bf31384d66737dac000000000000000000000000000000000000070c1520282d3239","attestation_type":"pqc_registry","signed_at":"2026-03-26 16:38:48"}],"hndl":{"id":49,"model_id":49,"risk_level":"MEDIUM","risk_score":45,"shelf_life_years":5,"sensitivity":"internal","recommendation":"Monitor quantum developments. Tool has moderate HNDL exposure.","assessed_at":"2026-03-26 03:20:50"}}