diff --git a/forge-test/AutomataDcapAttestationTest.t.sol b/forge-test/AutomataDcapAttestationTest.t.sol index 4bb370f..3d5f900 100644 --- a/forge-test/AutomataDcapAttestationTest.t.sol +++ b/forge-test/AutomataDcapAttestationTest.t.sol @@ -127,58 +127,20 @@ contract AutomataDcapAttestationTest is PCCSSetupBase, RiscZeroSetup, SuccinctSe assertTrue(success); } - function testSuccintGroth16ProofAttestation() public { - bytes32 vk = 0x0016d421d8599b43498eee7c30e6eca5e7aa05c02e38e5bf392937c98736fda6; - ISP1Verifier sp1Verifier = setupSP1Verifier(ProveOpt.Groth16); - ZkCoProcessorConfig memory riscZeroConfig = - ZkCoProcessorConfig({dcapProgramIdentifier: vk, zkVerifier: address(sp1Verifier)}); - vm.prank(admin); - attestation.setZkConfiguration(ZkCoProcessorType.Succinct, riscZeroConfig); - - // pinned May 10th, 2024, Midnight GMT - vm.warp(1715342400); - - vm.startPrank(admin); - bytes memory pckCrlUpdate = - hex"30820a6230820a08020101300a06082a8648ce3d04030230703122302006035504030c19496e74656c205347582050434b20506c6174666f726d204341311a3018060355040a0c11496e74656c20436f72706f726174696f6e3114301206035504070c0b53616e746120436c617261310b300906035504080c024341310b3009060355040613025553170d3234303530393132333735335a170d3234303630383132333735335a30820934303302146fc34e5023e728923435d61aa4b83c618166ad35170d3234303530393132333735335a300c300a0603551d1504030a01013034021500efae6e9715fca13b87e333e8261ed6d990a926ad170d3234303530393132333735335a300c300a0603551d1504030a01013034021500fd608648629cba73078b4d492f4b3ea741ad08cd170d3234303530393132333735335a300c300a0603551d1504030a010130340215008af924184e1d5afddd73c3d63a12f5e8b5737e56170d3234303530393132333735335a300c300a0603551d1504030a01013034021500b1257978cfa9ccdd0759abf8c5ca72fae3a78a9b170d3234303530393132333735335a300c300a0603551d1504030a01013033021474fea614a972be0e2843f2059835811ed872f9b3170d3234303530393132333735335a300c300a0603551d1504030a01013034021500f9c4ef56b3ab48d577e108baedf4bf88014214b9170d3234303530393132333735335a300c300a0603551d1504030a010130330214071de0778f9e5fc4f2878f30d6b07c9a30e6b30b170d3234303530393132333735335a300c300a0603551d1504030a01013034021500cde2424f972cea94ff239937f4d80c25029dd60b170d3234303530393132333735335a300c300a0603551d1504030a0101303302146c3319e5109b64507d3cf1132ce00349ef527319170d3234303530393132333735335a300c300a0603551d1504030a01013034021500df08d756b66a7497f43b5bb58ada04d3f4f7a937170d3234303530393132333735335a300c300a0603551d1504030a01013033021428af485b6cf67e409a39d5cb5aee4598f7a8fa7b170d3234303530393132333735335a300c300a0603551d1504030a01013034021500fb8b2daec092cada8aa9bc4ff2f1c20d0346668c170d3234303530393132333735335a300c300a0603551d1504030a01013034021500cd4850ac52bdcc69a6a6f058c8bc57bbd0b5f864170d3234303530393132333735335a300c300a0603551d1504030a01013034021500994dd3666f5275fb805f95dd02bd50cb2679d8ad170d3234303530393132333735335a300c300a0603551d1504030a0101303302140702136900252274d9035eedf5457462fad0ef4c170d3234303530393132333735335a300c300a0603551d1504030a01013033021461f2bf73e39b4e04aa27d801bd73d24319b5bf80170d3234303530393132333735335a300c300a0603551d1504030a0101303302143992be851b96902eff38959e6c2eff1b0651a4b5170d3234303530393132333735335a300c300a0603551d1504030a010130330214639f139a5040fdcff191e8a4fb1bf086ed603971170d3234303530393132333735335a300c300a0603551d1504030a01013034021500959d533f9249dc1e513544cdc830bf19b7f1f301170d3234303530393132333735335a300c300a0603551d1504030a0101303302140fda43a00b68ea79b7c2deaeac0b498bdfb2af90170d3234303530393132333735335a300c300a0603551d1504030a010130340215009d67753b81e47090aea763fbec4c4549bcdb9933170d3234303530393132333735335a300c300a0603551d1504030a01013033021434bfbb7a1d9c568147e118b614f7b76ed3ef68df170d3234303530393132333735335a300c300a0603551d1504030a0101303402150085d3c9381b77a7e04d119c9e5ad6749ff3ffab87170d3234303530393132333735335a300c300a0603551d1504030a0101303402150093887ca4411e7a923bd1fed2819b2949f201b5b4170d3234303530393132333735335a300c300a0603551d1504030a0101303302142498dc6283930996fd8bf23a37acbe26a3bed457170d3234303530393132333735335a300c300a0603551d1504030a010130340215008a66f1a749488667689cc3903ac54c662b712e73170d3234303530393132333735335a300c300a0603551d1504030a01013034021500afc13610bdd36cb7985d106481a880d3a01fda07170d3234303530393132333735335a300c300a0603551d1504030a01013034021500efe04b2c33d036aac96ca673bf1e9a47b64d5cbb170d3234303530393132333735335a300c300a0603551d1504030a0101303402150083d9ac8d8bb509d1c6c809ad712e8430559ed7f3170d3234303530393132333735335a300c300a0603551d1504030a0101303302147931fd50b5071c1bbfc5b7b6ded8b45b9d8b8529170d3234303530393132333735335a300c300a0603551d1504030a0101303302141fa20e2970bde5d57f7b8ddf8339484e1f1d0823170d3234303530393132333735335a300c300a0603551d1504030a0101303302141e87b2c3b32d8d23e411cef34197b95af0c8adf5170d3234303530393132333735335a300c300a0603551d1504030a010130340215009afd2ee90a473550a167d996911437c7502d1f09170d3234303530393132333735335a300c300a0603551d1504030a0101303302144481b0f11728a13b696d3ea9c770a0b15ec58dda170d3234303530393132333735335a300c300a0603551d1504030a01013034021500a7859f57982ef0e67d37bc8ef2ef5ac835ff1aa9170d3234303530393132333735335a300c300a0603551d1504030a0101303302147ae37748a9f912f4c63ba7ab07c593ce1d1d1181170d3234303530393132333735335a300c300a0603551d1504030a01013033021413884b33269938c195aa170fca75da177538df0b170d3234303530393132333735335a300c300a0603551d1504030a0101303302142c3cc6fe9279db1516d5ce39f2a898cda5a175e1170d3234303530393132333735335a300c300a0603551d1504030a010130330214717948687509234be979e4b7dce6f31bef64b68c170d3234303530393132333735335a300c300a0603551d1504030a010130340215009d76ef2c39c136e8658b6e7396b1d7445a27631f170d3234303530393132333735335a300c300a0603551d1504030a01013034021500c3e025fca995f36f59b48467939e3e34e6361a6f170d3234303530393132333735335a300c300a0603551d1504030a010130340215008c5f6b3257da05b17429e2e61ba965d67330606a170d3234303530393132333735335a300c300a0603551d1504030a01013034021500a17c51722ec1e0c3278fe8bdf052059cbec4e648170d3234303530393132333735335a300c300a0603551d1504030a0101a02f302d300a0603551d140403020101301f0603551d23041830168014956f5dcdbd1be1e94049c9d4f433ce01570bde54300a06082a8648ce3d04030203480030450220556cff7546df52c6c39dae93fd6c0c2c5375fffe28c9b06e702fd8fed06eb4ad022100dfcfc43950839421833147eac23990a3017b9ea2f6cd49a1060363b83246ba2b"; - pcsDao.upsertPckCrl(CA.PLATFORM, pckCrlUpdate); - V4QuoteVerifier quoteVerifier = new V4QuoteVerifier(P256_VERIFIER, address(pccsRouter)); - attestation.setQuoteVerifier(address(quoteVerifier)); - pccsRouter.setAuthorized(address(quoteVerifier), true); - assertEq(address(attestation.quoteVerifiers(4)), address(quoteVerifier)); - vm.stopPrank(); - - bytes memory output = - hex"55020004000000810790c06f000000040102000000000000000000000000009790d89a10210ec6968a773cee2ca05b5aa97309f36727a968527be4606fc19e6f73acce350946c9d46a9bf7a63f843000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000080e702060000000000f2dd2696f69b950645832bdc095ffd11247eeff687eeacdb57a58d2ddb9a9f94fea40c961e19460c00ffa31420ecbc180000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000998204508d58dcbfebe5e11c48669f7a921ac2da744dfb7d014ecdff2acdff1c9f665fdad52aadacf296a1df9909eb2383d100224f1716aeb431f7cb3cf028197dbd872487f27b0f6329ab17647dc9953c7014109818634f879e6550bc60f93eecfc42ff4d49278bfdbb0c77e570f4490cff10a2ee1ac11fbd2c2b49fa6cfa3cf1a1cb755c72522dd8a689e9d47906a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000278e753482976c8a7351fe2113609c7350d491cdae3d449eefc202fa41b2ad6840239cc2ba084c2d594b4e6dabeae0fcbf71c96daf0d0c9ecf0e9810c045790000a51167000000009d15153a84fbc62bcf79a13967729408838fc92c0c97eb85d628db3566af265467eebe27bf6dc0aa227bc8ad11c55c22370f4f7e7246c6c65bef5205342142090fa74a3f32c80b978c8ad671395dabf24283eef9091bc3919fd39b9915a87f1adf3061c165c0191e2658256a2855cac9267f179aafb1990c9e918d6452816adf9953f245d005b9d7d8e36a842a60b51e5cf85b2c2072ae397c178535c9985b77607c9c42db9df0b9b1a68b4172b8f2303edbf0a41308850a850bcbfb713318b0"; - bytes memory proofBytes = - hex"02090690900c2a14e85adb02593ae269bb6a4e0d8098d1939b32d057cf8fe73dcab26603701c1090beae84c08953e144aee41731878b00a5f68a830627ccddb609635f9d91107248fe5ad6d9ade4052829b574c4f124449172bbb0275ba7538bccc791b4b21eec494d2a3df1124de1bb6c10e7b7802364b7c76867af56809c9db027283ed200fbf3b39f1bb34751e7319002d988ab248f1ada5c2443ad4f75732da53412d228618160bb5ab7f6356eb0ca1aa7d6267c71291216217975a1738dae8f4f76d42a72e01519936b19c7ef38d15d1364854a62702abeedab435edc0390c50f542c23ce879c0bf941c2256b58b146731f7d5780a5e45dda5949ce18d27b866bd698"; - - (bool success, bytes memory ret) = attestation.verifyAndAttestWithZKProof(output, proofBytes); - - if (!success) { - console.log(string(ret)); - } - assertTrue(success); - } - - // function testSuccintPlonkProofAttestation() public { + // function testSuccintGroth16ProofAttestation() public { // bytes32 vk = 0x0016d421d8599b43498eee7c30e6eca5e7aa05c02e38e5bf392937c98736fda6; - // ISP1Verifier sp1Verifier = setupSP1Verifier(ProveOpt.Plonk); - // ZkCoProcessorConfig memory riscZeroConfig = ZkCoProcessorConfig({ - // dcapProgramIdentifier: vk, - // zkVerifier: address(sp1Verifier) - // }); + // ISP1Verifier sp1Verifier = setupSP1Verifier(ProveOpt.Groth16); + // ZkCoProcessorConfig memory riscZeroConfig = + // ZkCoProcessorConfig({dcapProgramIdentifier: vk, zkVerifier: address(sp1Verifier)}); // vm.prank(admin); - // attestation.setZkConfiguration( - // ZkCoProcessorType.Succinct, - // riscZeroConfig - // ); + // attestation.setZkConfiguration(ZkCoProcessorType.Succinct, riscZeroConfig); // // pinned May 10th, 2024, Midnight GMT // vm.warp(1715342400); // vm.startPrank(admin); - // bytes memory pckCrlUpdate = hex"30820a6230820a08020101300a06082a8648ce3d04030230703122302006035504030c19496e74656c205347582050434b20506c6174666f726d204341311a3018060355040a0c11496e74656c20436f72706f726174696f6e3114301206035504070c0b53616e746120436c617261310b300906035504080c024341310b3009060355040613025553170d3234303530393132333735335a170d3234303630383132333735335a30820934303302146fc34e5023e728923435d61aa4b83c618166ad35170d3234303530393132333735335a300c300a0603551d1504030a01013034021500efae6e9715fca13b87e333e8261ed6d990a926ad170d3234303530393132333735335a300c300a0603551d1504030a01013034021500fd608648629cba73078b4d492f4b3ea741ad08cd170d3234303530393132333735335a300c300a0603551d1504030a010130340215008af924184e1d5afddd73c3d63a12f5e8b5737e56170d3234303530393132333735335a300c300a0603551d1504030a01013034021500b1257978cfa9ccdd0759abf8c5ca72fae3a78a9b170d3234303530393132333735335a300c300a0603551d1504030a01013033021474fea614a972be0e2843f2059835811ed872f9b3170d3234303530393132333735335a300c300a0603551d1504030a01013034021500f9c4ef56b3ab48d577e108baedf4bf88014214b9170d3234303530393132333735335a300c300a0603551d1504030a010130330214071de0778f9e5fc4f2878f30d6b07c9a30e6b30b170d3234303530393132333735335a300c300a0603551d1504030a01013034021500cde2424f972cea94ff239937f4d80c25029dd60b170d3234303530393132333735335a300c300a0603551d1504030a0101303302146c3319e5109b64507d3cf1132ce00349ef527319170d3234303530393132333735335a300c300a0603551d1504030a01013034021500df08d756b66a7497f43b5bb58ada04d3f4f7a937170d3234303530393132333735335a300c300a0603551d1504030a01013033021428af485b6cf67e409a39d5cb5aee4598f7a8fa7b170d3234303530393132333735335a300c300a0603551d1504030a01013034021500fb8b2daec092cada8aa9bc4ff2f1c20d0346668c170d3234303530393132333735335a300c300a0603551d1504030a01013034021500cd4850ac52bdcc69a6a6f058c8bc57bbd0b5f864170d3234303530393132333735335a300c300a0603551d1504030a01013034021500994dd3666f5275fb805f95dd02bd50cb2679d8ad170d3234303530393132333735335a300c300a0603551d1504030a0101303302140702136900252274d9035eedf5457462fad0ef4c170d3234303530393132333735335a300c300a0603551d1504030a01013033021461f2bf73e39b4e04aa27d801bd73d24319b5bf80170d3234303530393132333735335a300c300a0603551d1504030a0101303302143992be851b96902eff38959e6c2eff1b0651a4b5170d3234303530393132333735335a300c300a0603551d1504030a010130330214639f139a5040fdcff191e8a4fb1bf086ed603971170d3234303530393132333735335a300c300a0603551d1504030a01013034021500959d533f9249dc1e513544cdc830bf19b7f1f301170d3234303530393132333735335a300c300a0603551d1504030a0101303302140fda43a00b68ea79b7c2deaeac0b498bdfb2af90170d3234303530393132333735335a300c300a0603551d1504030a010130340215009d67753b81e47090aea763fbec4c4549bcdb9933170d3234303530393132333735335a300c300a0603551d1504030a01013033021434bfbb7a1d9c568147e118b614f7b76ed3ef68df170d3234303530393132333735335a300c300a0603551d1504030a0101303402150085d3c9381b77a7e04d119c9e5ad6749ff3ffab87170d3234303530393132333735335a300c300a0603551d1504030a0101303402150093887ca4411e7a923bd1fed2819b2949f201b5b4170d3234303530393132333735335a300c300a0603551d1504030a0101303302142498dc6283930996fd8bf23a37acbe26a3bed457170d3234303530393132333735335a300c300a0603551d1504030a010130340215008a66f1a749488667689cc3903ac54c662b712e73170d3234303530393132333735335a300c300a0603551d1504030a01013034021500afc13610bdd36cb7985d106481a880d3a01fda07170d3234303530393132333735335a300c300a0603551d1504030a01013034021500efe04b2c33d036aac96ca673bf1e9a47b64d5cbb170d3234303530393132333735335a300c300a0603551d1504030a0101303402150083d9ac8d8bb509d1c6c809ad712e8430559ed7f3170d3234303530393132333735335a300c300a0603551d1504030a0101303302147931fd50b5071c1bbfc5b7b6ded8b45b9d8b8529170d3234303530393132333735335a300c300a0603551d1504030a0101303302141fa20e2970bde5d57f7b8ddf8339484e1f1d0823170d3234303530393132333735335a300c300a0603551d1504030a0101303302141e87b2c3b32d8d23e411cef34197b95af0c8adf5170d3234303530393132333735335a300c300a0603551d1504030a010130340215009afd2ee90a473550a167d996911437c7502d1f09170d3234303530393132333735335a300c300a0603551d1504030a0101303302144481b0f11728a13b696d3ea9c770a0b15ec58dda170d3234303530393132333735335a300c300a0603551d1504030a01013034021500a7859f57982ef0e67d37bc8ef2ef5ac835ff1aa9170d3234303530393132333735335a300c300a0603551d1504030a0101303302147ae37748a9f912f4c63ba7ab07c593ce1d1d1181170d3234303530393132333735335a300c300a0603551d1504030a01013033021413884b33269938c195aa170fca75da177538df0b170d3234303530393132333735335a300c300a0603551d1504030a0101303302142c3cc6fe9279db1516d5ce39f2a898cda5a175e1170d3234303530393132333735335a300c300a0603551d1504030a010130330214717948687509234be979e4b7dce6f31bef64b68c170d3234303530393132333735335a300c300a0603551d1504030a010130340215009d76ef2c39c136e8658b6e7396b1d7445a27631f170d3234303530393132333735335a300c300a0603551d1504030a01013034021500c3e025fca995f36f59b48467939e3e34e6361a6f170d3234303530393132333735335a300c300a0603551d1504030a010130340215008c5f6b3257da05b17429e2e61ba965d67330606a170d3234303530393132333735335a300c300a0603551d1504030a01013034021500a17c51722ec1e0c3278fe8bdf052059cbec4e648170d3234303530393132333735335a300c300a0603551d1504030a0101a02f302d300a0603551d140403020101301f0603551d23041830168014956f5dcdbd1be1e94049c9d4f433ce01570bde54300a06082a8648ce3d04030203480030450220556cff7546df52c6c39dae93fd6c0c2c5375fffe28c9b06e702fd8fed06eb4ad022100dfcfc43950839421833147eac23990a3017b9ea2f6cd49a1060363b83246ba2b"; + // bytes memory pckCrlUpdate = + // hex"30820a6230820a08020101300a06082a8648ce3d04030230703122302006035504030c19496e74656c205347582050434b20506c6174666f726d204341311a3018060355040a0c11496e74656c20436f72706f726174696f6e3114301206035504070c0b53616e746120436c617261310b300906035504080c024341310b3009060355040613025553170d3234303530393132333735335a170d3234303630383132333735335a30820934303302146fc34e5023e728923435d61aa4b83c618166ad35170d3234303530393132333735335a300c300a0603551d1504030a01013034021500efae6e9715fca13b87e333e8261ed6d990a926ad170d3234303530393132333735335a300c300a0603551d1504030a01013034021500fd608648629cba73078b4d492f4b3ea741ad08cd170d3234303530393132333735335a300c300a0603551d1504030a010130340215008af924184e1d5afddd73c3d63a12f5e8b5737e56170d3234303530393132333735335a300c300a0603551d1504030a01013034021500b1257978cfa9ccdd0759abf8c5ca72fae3a78a9b170d3234303530393132333735335a300c300a0603551d1504030a01013033021474fea614a972be0e2843f2059835811ed872f9b3170d3234303530393132333735335a300c300a0603551d1504030a01013034021500f9c4ef56b3ab48d577e108baedf4bf88014214b9170d3234303530393132333735335a300c300a0603551d1504030a010130330214071de0778f9e5fc4f2878f30d6b07c9a30e6b30b170d3234303530393132333735335a300c300a0603551d1504030a01013034021500cde2424f972cea94ff239937f4d80c25029dd60b170d3234303530393132333735335a300c300a0603551d1504030a0101303302146c3319e5109b64507d3cf1132ce00349ef527319170d3234303530393132333735335a300c300a0603551d1504030a01013034021500df08d756b66a7497f43b5bb58ada04d3f4f7a937170d3234303530393132333735335a300c300a0603551d1504030a01013033021428af485b6cf67e409a39d5cb5aee4598f7a8fa7b170d3234303530393132333735335a300c300a0603551d1504030a01013034021500fb8b2daec092cada8aa9bc4ff2f1c20d0346668c170d3234303530393132333735335a300c300a0603551d1504030a01013034021500cd4850ac52bdcc69a6a6f058c8bc57bbd0b5f864170d3234303530393132333735335a300c300a0603551d1504030a01013034021500994dd3666f5275fb805f95dd02bd50cb2679d8ad170d3234303530393132333735335a300c300a0603551d1504030a0101303302140702136900252274d9035eedf5457462fad0ef4c170d3234303530393132333735335a300c300a0603551d1504030a01013033021461f2bf73e39b4e04aa27d801bd73d24319b5bf80170d3234303530393132333735335a300c300a0603551d1504030a0101303302143992be851b96902eff38959e6c2eff1b0651a4b5170d3234303530393132333735335a300c300a0603551d1504030a010130330214639f139a5040fdcff191e8a4fb1bf086ed603971170d3234303530393132333735335a300c300a0603551d1504030a01013034021500959d533f9249dc1e513544cdc830bf19b7f1f301170d3234303530393132333735335a300c300a0603551d1504030a0101303302140fda43a00b68ea79b7c2deaeac0b498bdfb2af90170d3234303530393132333735335a300c300a0603551d1504030a010130340215009d67753b81e47090aea763fbec4c4549bcdb9933170d3234303530393132333735335a300c300a0603551d1504030a01013033021434bfbb7a1d9c568147e118b614f7b76ed3ef68df170d3234303530393132333735335a300c300a0603551d1504030a0101303402150085d3c9381b77a7e04d119c9e5ad6749ff3ffab87170d3234303530393132333735335a300c300a0603551d1504030a0101303402150093887ca4411e7a923bd1fed2819b2949f201b5b4170d3234303530393132333735335a300c300a0603551d1504030a0101303302142498dc6283930996fd8bf23a37acbe26a3bed457170d3234303530393132333735335a300c300a0603551d1504030a010130340215008a66f1a749488667689cc3903ac54c662b712e73170d3234303530393132333735335a300c300a0603551d1504030a01013034021500afc13610bdd36cb7985d106481a880d3a01fda07170d3234303530393132333735335a300c300a0603551d1504030a01013034021500efe04b2c33d036aac96ca673bf1e9a47b64d5cbb170d3234303530393132333735335a300c300a0603551d1504030a0101303402150083d9ac8d8bb509d1c6c809ad712e8430559ed7f3170d3234303530393132333735335a300c300a0603551d1504030a0101303302147931fd50b5071c1bbfc5b7b6ded8b45b9d8b8529170d3234303530393132333735335a300c300a0603551d1504030a0101303302141fa20e2970bde5d57f7b8ddf8339484e1f1d0823170d3234303530393132333735335a300c300a0603551d1504030a0101303302141e87b2c3b32d8d23e411cef34197b95af0c8adf5170d3234303530393132333735335a300c300a0603551d1504030a010130340215009afd2ee90a473550a167d996911437c7502d1f09170d3234303530393132333735335a300c300a0603551d1504030a0101303302144481b0f11728a13b696d3ea9c770a0b15ec58dda170d3234303530393132333735335a300c300a0603551d1504030a01013034021500a7859f57982ef0e67d37bc8ef2ef5ac835ff1aa9170d3234303530393132333735335a300c300a0603551d1504030a0101303302147ae37748a9f912f4c63ba7ab07c593ce1d1d1181170d3234303530393132333735335a300c300a0603551d1504030a01013033021413884b33269938c195aa170fca75da177538df0b170d3234303530393132333735335a300c300a0603551d1504030a0101303302142c3cc6fe9279db1516d5ce39f2a898cda5a175e1170d3234303530393132333735335a300c300a0603551d1504030a010130330214717948687509234be979e4b7dce6f31bef64b68c170d3234303530393132333735335a300c300a0603551d1504030a010130340215009d76ef2c39c136e8658b6e7396b1d7445a27631f170d3234303530393132333735335a300c300a0603551d1504030a01013034021500c3e025fca995f36f59b48467939e3e34e6361a6f170d3234303530393132333735335a300c300a0603551d1504030a010130340215008c5f6b3257da05b17429e2e61ba965d67330606a170d3234303530393132333735335a300c300a0603551d1504030a01013034021500a17c51722ec1e0c3278fe8bdf052059cbec4e648170d3234303530393132333735335a300c300a0603551d1504030a0101a02f302d300a0603551d140403020101301f0603551d23041830168014956f5dcdbd1be1e94049c9d4f433ce01570bde54300a06082a8648ce3d04030203480030450220556cff7546df52c6c39dae93fd6c0c2c5375fffe28c9b06e702fd8fed06eb4ad022100dfcfc43950839421833147eac23990a3017b9ea2f6cd49a1060363b83246ba2b"; // pcsDao.upsertPckCrl(CA.PLATFORM, pckCrlUpdate); // V4QuoteVerifier quoteVerifier = new V4QuoteVerifier(P256_VERIFIER, address(pccsRouter)); // attestation.setQuoteVerifier(address(quoteVerifier)); @@ -186,17 +148,55 @@ contract AutomataDcapAttestationTest is PCCSSetupBase, RiscZeroSetup, SuccinctSe // assertEq(address(attestation.quoteVerifiers(4)), address(quoteVerifier)); // vm.stopPrank(); - // bytes memory output = hex"55020004000000810790c06f000000040102000000000000000000000000009790d89a10210ec6968a773cee2ca05b5aa97309f36727a968527be4606fc19e6f73acce350946c9d46a9bf7a63f843000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000080e702060000000000f2dd2696f69b950645832bdc095ffd11247eeff687eeacdb57a58d2ddb9a9f94fea40c961e19460c00ffa31420ecbc180000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000998204508d58dcbfebe5e11c48669f7a921ac2da744dfb7d014ecdff2acdff1c9f665fdad52aadacf296a1df9909eb2383d100224f1716aeb431f7cb3cf028197dbd872487f27b0f6329ab17647dc9953c7014109818634f879e6550bc60f93eecfc42ff4d49278bfdbb0c77e570f4490cff10a2ee1ac11fbd2c2b49fa6cfa3cf1a1cb755c72522dd8a689e9d47906a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000278e753482976c8a7351fe2113609c7350d491cdae3d449eefc202fa41b2ad6840239cc2ba084c2d594b4e6dabeae0fcbf71c96daf0d0c9ecf0e9810c045790000a51167000000009d15153a84fbc62bcf79a13967729408838fc92c0c97eb85d628db3566af265467eebe27bf6dc0aa227bc8ad11c55c22370f4f7e7246c6c65bef5205342142090fa74a3f32c80b978c8ad671395dabf24283eef9091bc3919fd39b9915a87f1adf3061c165c0191e2658256a2855cac9267f179aafb1990c9e918d6452816adf9953f245d005b9d7d8e36a842a60b51e5cf85b2c2072ae397c178535c9985b77607c9c42db9df0b9b1a68b4172b8f2303edbf0a41308850a850bcbfb713318b0"; - // bytes memory proofBytes = hex"0254bdcae302c578c28074b9f5ac6a7e1e9d69e05e7bb172edb4eb01713796f79ccb2b6b9b2e568cfe8abcd85e9a17e77bfa229040f66d3fc32050fe311061e3adfc86743f02515ab315c0009061a14b917fd88bc98a466d898527c4b987eac8f1353df6c60cbff6bc50adffc0e087b67f3d75ecf4ed1e502b1ce05743b935d0e79ed6a9770a857a91081bf0bcfd0ed51395fa9ce83f310b903b9d2ff6f137a3c1f4fe0c1d0b886eafdf8027f7b0d6e49354c2f0b6246a5f75f5a031d2140ce2656faa7ab60ab2ee2b0361df8e3b8aef629277d61bc5ab732528e0a74c319c7cacd140d98c2dc54c9e5cb9ae7544ba6fdd4f90191670d50225a37775faa55ec091f7b9301607243d4652182abdd7f74dd0240484aed21291a4250cf04a84fe315bf46f0b310d24ff86efcee8318ee43aeba8df0adca1ffe9f7b19c0b978d324f9d7e34e8cf1ccc6e484de6432b4670b1de5aa994a4c04d50cb5aa506c03a063e70ded3ad480bff382e1da7104c808558107a51a95e1aa5e4426ba3660aa6894a9c45c8cc571b495f4c7f3c5802cbb1322e7683ae8bf9e9b4bcb7c72c4fa5661c215363abf32bbbdcdb69160a1b2e54e3bdd9a643db1551a7be5bee8bc228b001826129b4991782eb98e1ed29c845133be823df7c3425645fde880a683b536e4ed39752e23f01db352b7d70fce79bb667841b03c3782dd02a1d1a08acd09843833ee5e0d78b1c7be7c86e3f83da02862eddd46aaf8c71e652d6daf9bc16c469a6bdf79e2fa229bf14a36c37c3b23b6c6f4ca54e566b715bc749344c0043200aef11755e7ff0161a99d097dd5de337ae52bc5b7524ca8203d8ec5838e320c8fe21eb693c014e27139525e35eef0faa954aa6f7047b35e72a8b186a22245df8ab7b4c25fddad4044a53021931815e8a958e6a2c885bea3064e3202f5cca7f27fa10a207c48309206bc23b51714911511194e1ea0b5ae30dbdfa63c39bb50ec600a71d1b4f94561e479b720036334d248b8f7637aaeadd45bf1a601a67860073fa0704b5a4b7ed1e406d758fc71319a5e52d6590a00694020b16f6b67933c9b1f0490a86185b79205debb05323cac965a159d7e73b4ce292e36d88b6b0f53d30cf5db5e4d26d5412e29ac4a20a780c9e341bcd95eef81bc3ce6970c9797cc5493eaadb5dade98c2a9735c052860ecd31a7d9e27b5f03ee13159ae8aeb0bfcf0dee1071649c6975"; + // bytes memory output = + // hex"55020004000000810790c06f000000040102000000000000000000000000009790d89a10210ec6968a773cee2ca05b5aa97309f36727a968527be4606fc19e6f73acce350946c9d46a9bf7a63f843000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000080e702060000000000f2dd2696f69b950645832bdc095ffd11247eeff687eeacdb57a58d2ddb9a9f94fea40c961e19460c00ffa31420ecbc180000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000998204508d58dcbfebe5e11c48669f7a921ac2da744dfb7d014ecdff2acdff1c9f665fdad52aadacf296a1df9909eb2383d100224f1716aeb431f7cb3cf028197dbd872487f27b0f6329ab17647dc9953c7014109818634f879e6550bc60f93eecfc42ff4d49278bfdbb0c77e570f4490cff10a2ee1ac11fbd2c2b49fa6cfa3cf1a1cb755c72522dd8a689e9d47906a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000278e753482976c8a7351fe2113609c7350d491cdae3d449eefc202fa41b2ad6840239cc2ba084c2d594b4e6dabeae0fcbf71c96daf0d0c9ecf0e9810c045790000a51167000000009d15153a84fbc62bcf79a13967729408838fc92c0c97eb85d628db3566af265467eebe27bf6dc0aa227bc8ad11c55c22370f4f7e7246c6c65bef5205342142090fa74a3f32c80b978c8ad671395dabf24283eef9091bc3919fd39b9915a87f1adf3061c165c0191e2658256a2855cac9267f179aafb1990c9e918d6452816adf9953f245d005b9d7d8e36a842a60b51e5cf85b2c2072ae397c178535c9985b77607c9c42db9df0b9b1a68b4172b8f2303edbf0a41308850a850bcbfb713318b0"; + // bytes memory proofBytes = + // hex"02090690900c2a14e85adb02593ae269bb6a4e0d8098d1939b32d057cf8fe73dcab26603701c1090beae84c08953e144aee41731878b00a5f68a830627ccddb609635f9d91107248fe5ad6d9ade4052829b574c4f124449172bbb0275ba7538bccc791b4b21eec494d2a3df1124de1bb6c10e7b7802364b7c76867af56809c9db027283ed200fbf3b39f1bb34751e7319002d988ab248f1ada5c2443ad4f75732da53412d228618160bb5ab7f6356eb0ca1aa7d6267c71291216217975a1738dae8f4f76d42a72e01519936b19c7ef38d15d1364854a62702abeedab435edc0390c50f542c23ce879c0bf941c2256b58b146731f7d5780a5e45dda5949ce18d27b866bd698"; - // (bool success, bytes memory ret)= attestation.verifyAndAttestWithZKProof( - // output, - // proofBytes - // ); + // (bool success, bytes memory ret) = attestation.verifyAndAttestWithZKProof(output, proofBytes); // if (!success) { // console.log(string(ret)); // } // assertTrue(success); // } + + function testSuccintPlonkProofAttestation() public { + bytes32 vk = 0x0016d421d8599b43498eee7c30e6eca5e7aa05c02e38e5bf392937c98736fda6; + ISP1Verifier sp1Verifier = setupSP1Verifier(ProveOpt.Plonk); + ZkCoProcessorConfig memory riscZeroConfig = ZkCoProcessorConfig({ + dcapProgramIdentifier: vk, + zkVerifier: address(sp1Verifier) + }); + vm.prank(admin); + attestation.setZkConfiguration( + ZkCoProcessorType.Succinct, + riscZeroConfig + ); + + // pinned May 10th, 2024, Midnight GMT + vm.warp(1715342400); + + vm.startPrank(admin); + bytes memory pckCrlUpdate = hex"30820a6230820a08020101300a06082a8648ce3d04030230703122302006035504030c19496e74656c205347582050434b20506c6174666f726d204341311a3018060355040a0c11496e74656c20436f72706f726174696f6e3114301206035504070c0b53616e746120436c617261310b300906035504080c024341310b3009060355040613025553170d3234303530393132333735335a170d3234303630383132333735335a30820934303302146fc34e5023e728923435d61aa4b83c618166ad35170d3234303530393132333735335a300c300a0603551d1504030a01013034021500efae6e9715fca13b87e333e8261ed6d990a926ad170d3234303530393132333735335a300c300a0603551d1504030a01013034021500fd608648629cba73078b4d492f4b3ea741ad08cd170d3234303530393132333735335a300c300a0603551d1504030a010130340215008af924184e1d5afddd73c3d63a12f5e8b5737e56170d3234303530393132333735335a300c300a0603551d1504030a01013034021500b1257978cfa9ccdd0759abf8c5ca72fae3a78a9b170d3234303530393132333735335a300c300a0603551d1504030a01013033021474fea614a972be0e2843f2059835811ed872f9b3170d3234303530393132333735335a300c300a0603551d1504030a01013034021500f9c4ef56b3ab48d577e108baedf4bf88014214b9170d3234303530393132333735335a300c300a0603551d1504030a010130330214071de0778f9e5fc4f2878f30d6b07c9a30e6b30b170d3234303530393132333735335a300c300a0603551d1504030a01013034021500cde2424f972cea94ff239937f4d80c25029dd60b170d3234303530393132333735335a300c300a0603551d1504030a0101303302146c3319e5109b64507d3cf1132ce00349ef527319170d3234303530393132333735335a300c300a0603551d1504030a01013034021500df08d756b66a7497f43b5bb58ada04d3f4f7a937170d3234303530393132333735335a300c300a0603551d1504030a01013033021428af485b6cf67e409a39d5cb5aee4598f7a8fa7b170d3234303530393132333735335a300c300a0603551d1504030a01013034021500fb8b2daec092cada8aa9bc4ff2f1c20d0346668c170d3234303530393132333735335a300c300a0603551d1504030a01013034021500cd4850ac52bdcc69a6a6f058c8bc57bbd0b5f864170d3234303530393132333735335a300c300a0603551d1504030a01013034021500994dd3666f5275fb805f95dd02bd50cb2679d8ad170d3234303530393132333735335a300c300a0603551d1504030a0101303302140702136900252274d9035eedf5457462fad0ef4c170d3234303530393132333735335a300c300a0603551d1504030a01013033021461f2bf73e39b4e04aa27d801bd73d24319b5bf80170d3234303530393132333735335a300c300a0603551d1504030a0101303302143992be851b96902eff38959e6c2eff1b0651a4b5170d3234303530393132333735335a300c300a0603551d1504030a010130330214639f139a5040fdcff191e8a4fb1bf086ed603971170d3234303530393132333735335a300c300a0603551d1504030a01013034021500959d533f9249dc1e513544cdc830bf19b7f1f301170d3234303530393132333735335a300c300a0603551d1504030a0101303302140fda43a00b68ea79b7c2deaeac0b498bdfb2af90170d3234303530393132333735335a300c300a0603551d1504030a010130340215009d67753b81e47090aea763fbec4c4549bcdb9933170d3234303530393132333735335a300c300a0603551d1504030a01013033021434bfbb7a1d9c568147e118b614f7b76ed3ef68df170d3234303530393132333735335a300c300a0603551d1504030a0101303402150085d3c9381b77a7e04d119c9e5ad6749ff3ffab87170d3234303530393132333735335a300c300a0603551d1504030a0101303402150093887ca4411e7a923bd1fed2819b2949f201b5b4170d3234303530393132333735335a300c300a0603551d1504030a0101303302142498dc6283930996fd8bf23a37acbe26a3bed457170d3234303530393132333735335a300c300a0603551d1504030a010130340215008a66f1a749488667689cc3903ac54c662b712e73170d3234303530393132333735335a300c300a0603551d1504030a01013034021500afc13610bdd36cb7985d106481a880d3a01fda07170d3234303530393132333735335a300c300a0603551d1504030a01013034021500efe04b2c33d036aac96ca673bf1e9a47b64d5cbb170d3234303530393132333735335a300c300a0603551d1504030a0101303402150083d9ac8d8bb509d1c6c809ad712e8430559ed7f3170d3234303530393132333735335a300c300a0603551d1504030a0101303302147931fd50b5071c1bbfc5b7b6ded8b45b9d8b8529170d3234303530393132333735335a300c300a0603551d1504030a0101303302141fa20e2970bde5d57f7b8ddf8339484e1f1d0823170d3234303530393132333735335a300c300a0603551d1504030a0101303302141e87b2c3b32d8d23e411cef34197b95af0c8adf5170d3234303530393132333735335a300c300a0603551d1504030a010130340215009afd2ee90a473550a167d996911437c7502d1f09170d3234303530393132333735335a300c300a0603551d1504030a0101303302144481b0f11728a13b696d3ea9c770a0b15ec58dda170d3234303530393132333735335a300c300a0603551d1504030a01013034021500a7859f57982ef0e67d37bc8ef2ef5ac835ff1aa9170d3234303530393132333735335a300c300a0603551d1504030a0101303302147ae37748a9f912f4c63ba7ab07c593ce1d1d1181170d3234303530393132333735335a300c300a0603551d1504030a01013033021413884b33269938c195aa170fca75da177538df0b170d3234303530393132333735335a300c300a0603551d1504030a0101303302142c3cc6fe9279db1516d5ce39f2a898cda5a175e1170d3234303530393132333735335a300c300a0603551d1504030a010130330214717948687509234be979e4b7dce6f31bef64b68c170d3234303530393132333735335a300c300a0603551d1504030a010130340215009d76ef2c39c136e8658b6e7396b1d7445a27631f170d3234303530393132333735335a300c300a0603551d1504030a01013034021500c3e025fca995f36f59b48467939e3e34e6361a6f170d3234303530393132333735335a300c300a0603551d1504030a010130340215008c5f6b3257da05b17429e2e61ba965d67330606a170d3234303530393132333735335a300c300a0603551d1504030a01013034021500a17c51722ec1e0c3278fe8bdf052059cbec4e648170d3234303530393132333735335a300c300a0603551d1504030a0101a02f302d300a0603551d140403020101301f0603551d23041830168014956f5dcdbd1be1e94049c9d4f433ce01570bde54300a06082a8648ce3d04030203480030450220556cff7546df52c6c39dae93fd6c0c2c5375fffe28c9b06e702fd8fed06eb4ad022100dfcfc43950839421833147eac23990a3017b9ea2f6cd49a1060363b83246ba2b"; + pcsDao.upsertPckCrl(CA.PLATFORM, pckCrlUpdate); + V4QuoteVerifier quoteVerifier = new V4QuoteVerifier(P256_VERIFIER, address(pccsRouter)); + attestation.setQuoteVerifier(address(quoteVerifier)); + pccsRouter.setAuthorized(address(quoteVerifier), true); + assertEq(address(attestation.quoteVerifiers(4)), address(quoteVerifier)); + vm.stopPrank(); + + bytes memory output = hex"55020004000000810790c06f000000040102000000000000000000000000009790d89a10210ec6968a773cee2ca05b5aa97309f36727a968527be4606fc19e6f73acce350946c9d46a9bf7a63f843000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000080e702060000000000f2dd2696f69b950645832bdc095ffd11247eeff687eeacdb57a58d2ddb9a9f94fea40c961e19460c00ffa31420ecbc180000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000998204508d58dcbfebe5e11c48669f7a921ac2da744dfb7d014ecdff2acdff1c9f665fdad52aadacf296a1df9909eb2383d100224f1716aeb431f7cb3cf028197dbd872487f27b0f6329ab17647dc9953c7014109818634f879e6550bc60f93eecfc42ff4d49278bfdbb0c77e570f4490cff10a2ee1ac11fbd2c2b49fa6cfa3cf1a1cb755c72522dd8a689e9d47906a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000278e753482976c8a7351fe2113609c7350d491cdae3d449eefc202fa41b2ad6840239cc2ba084c2d594b4e6dabeae0fcbf71c96daf0d0c9ecf0e9810c045790000a51167000000009d15153a84fbc62bcf79a13967729408838fc92c0c97eb85d628db3566af265467eebe27bf6dc0aa227bc8ad11c55c22370f4f7e7246c6c65bef5205342142090fa74a3f32c80b978c8ad671395dabf24283eef9091bc3919fd39b9915a87f1adf3061c165c0191e2658256a2855cac9267f179aafb1990c9e918d6452816adf9953f245d005b9d7d8e36a842a60b51e5cf85b2c2072ae397c178535c9985b77607c9c42db9df0b9b1a68b4172b8f2303edbf0a41308850a850bcbfb713318b0"; + bytes memory proofBytes = hex"0254bdcae302c578c28074b9f5ac6a7e1e9d69e05e7bb172edb4eb01713796f79ccb2b6b9b2e568cfe8abcd85e9a17e77bfa229040f66d3fc32050fe311061e3adfc86743f02515ab315c0009061a14b917fd88bc98a466d898527c4b987eac8f1353df6c60cbff6bc50adffc0e087b67f3d75ecf4ed1e502b1ce05743b935d0e79ed6a9770a857a91081bf0bcfd0ed51395fa9ce83f310b903b9d2ff6f137a3c1f4fe0c1d0b886eafdf8027f7b0d6e49354c2f0b6246a5f75f5a031d2140ce2656faa7ab60ab2ee2b0361df8e3b8aef629277d61bc5ab732528e0a74c319c7cacd140d98c2dc54c9e5cb9ae7544ba6fdd4f90191670d50225a37775faa55ec091f7b9301607243d4652182abdd7f74dd0240484aed21291a4250cf04a84fe315bf46f0b310d24ff86efcee8318ee43aeba8df0adca1ffe9f7b19c0b978d324f9d7e34e8cf1ccc6e484de6432b4670b1de5aa994a4c04d50cb5aa506c03a063e70ded3ad480bff382e1da7104c808558107a51a95e1aa5e4426ba3660aa6894a9c45c8cc571b495f4c7f3c5802cbb1322e7683ae8bf9e9b4bcb7c72c4fa5661c215363abf32bbbdcdb69160a1b2e54e3bdd9a643db1551a7be5bee8bc228b001826129b4991782eb98e1ed29c845133be823df7c3425645fde880a683b536e4ed39752e23f01db352b7d70fce79bb667841b03c3782dd02a1d1a08acd09843833ee5e0d78b1c7be7c86e3f83da02862eddd46aaf8c71e652d6daf9bc16c469a6bdf79e2fa229bf14a36c37c3b23b6c6f4ca54e566b715bc749344c0043200aef11755e7ff0161a99d097dd5de337ae52bc5b7524ca8203d8ec5838e320c8fe21eb693c014e27139525e35eef0faa954aa6f7047b35e72a8b186a22245df8ab7b4c25fddad4044a53021931815e8a958e6a2c885bea3064e3202f5cca7f27fa10a207c48309206bc23b51714911511194e1ea0b5ae30dbdfa63c39bb50ec600a71d1b4f94561e479b720036334d248b8f7637aaeadd45bf1a601a67860073fa0704b5a4b7ed1e406d758fc71319a5e52d6590a00694020b16f6b67933c9b1f0490a86185b79205debb05323cac965a159d7e73b4ce292e36d88b6b0f53d30cf5db5e4d26d5412e29ac4a20a780c9e341bcd95eef81bc3ce6970c9797cc5493eaadb5dade98c2a9735c052860ecd31a7d9e27b5f03ee13159ae8aeb0bfcf0dee1071649c6975"; + + (bool success, bytes memory ret)= attestation.verifyAndAttestWithZKProof( + output, + proofBytes + ); + + if (!success) { + console.log(string(ret)); + } + assertTrue(success); + } } diff --git a/forge-test/utils/SuccinctSetup.sol b/forge-test/utils/SuccinctSetup.sol index 994a08e..87f6372 100644 --- a/forge-test/utils/SuccinctSetup.sol +++ b/forge-test/utils/SuccinctSetup.sol @@ -1,8 +1,8 @@ // SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.13; -import {SP1Verifier} from "@sp1-contracts/v3.0.0/SP1VerifierGroth16.sol"; -// import {SP1Verifier} from "@sp1-contracts/v3.0.0/SP1VerifierPlonk.sol"; +// import {SP1Verifier} from "@sp1-contracts/v3.0.0/SP1VerifierGroth16.sol"; +import {SP1Verifier} from "@sp1-contracts/v3.0.0/SP1VerifierPlonk.sol"; import {ISP1Verifier} from "@sp1-contracts/ISP1Verifier.sol"; enum ProveOpt { @@ -12,14 +12,14 @@ enum ProveOpt { abstract contract SuccinctSetup { function setupSP1Verifier(ProveOpt opt) internal returns (ISP1Verifier verifier) { - if (opt == ProveOpt.Groth16) { - SP1Verifier groth16Verifier = new SP1Verifier(); - verifier = ISP1Verifier(address(groth16Verifier)); - } - // } else - // if (opt == ProveOpt.Plonk) { - // SP1Verifier plonkVerifier = new SP1Verifier(); - // verifier = ISP1Verifier(address(plonkVerifier)); + // if (opt == ProveOpt.Groth16) { + // SP1Verifier groth16Verifier = new SP1Verifier(); + // verifier = ISP1Verifier(address(groth16Verifier)); // } + // } else + if (opt == ProveOpt.Plonk) { + SP1Verifier plonkVerifier = new SP1Verifier(); + verifier = ISP1Verifier(address(plonkVerifier)); + } } }