Skip to content

Commit

Permalink
DEV-3553 (#10)
Browse files Browse the repository at this point in the history
* updated pccs and router

* updated pccs

* applied changes based on pccs updates
  • Loading branch information
preston4896 authored Jan 3, 2025
1 parent be105f5 commit 560c208
Show file tree
Hide file tree
Showing 7 changed files with 40 additions and 14 deletions.
1 change: 1 addition & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,4 @@
[submodule "lib/automata-on-chain-pccs"]
path = lib/automata-on-chain-pccs
url = https://github.com/automata-network/automata-on-chain-pccs
branch = main
26 changes: 23 additions & 3 deletions contracts/PCCSRouter.sol
Original file line number Diff line number Diff line change
Expand Up @@ -170,9 +170,13 @@ contract PCCSRouter is IPCCSRouter, Ownable {
valid = data.length > 0;
if (valid) {
bytes memory encodedLevels;
(tcbInfo, tdxModule, tdxModuleIdentities, encodedLevels,,) =
abi.decode(data, (TcbInfoBasic, TDXModule, TDXModuleIdentity[], bytes, string, bytes));
bytes memory encodedTdxModuleIdentities;
(tcbInfo, tdxModule, encodedTdxModuleIdentities, encodedLevels,,) =
abi.decode(data, (TcbInfoBasic, TDXModule, bytes, bytes, string, bytes));
tcbLevelsV3 = _decodeTcbLevels(encodedLevels);
if (encodedTdxModuleIdentities.length > 0) {
tdxModuleIdentities = _decodeTdxModuleIdentities(encodedTdxModuleIdentities);
}
} else {
revert FmspcTcbNotFound(id, 3);
}
Expand Down Expand Up @@ -210,8 +214,24 @@ contract PCCSRouter is IPCCSRouter, Ownable {
bytes[] memory encodedTcbLevelsArr = abi.decode(encodedTcbLevels, (bytes[]));
uint256 n = encodedTcbLevelsArr.length;
tcbLevels = new TCBLevelsObj[](n);
for (uint256 i = 0; i < n; i++) {
for (uint256 i = 0; i < n; ) {
tcbLevels[i] = fmspcTcbHelper.tcbLevelsObjFromBytes(encodedTcbLevelsArr[i]);
unchecked {
i++;
}
}
}

function _decodeTdxModuleIdentities(bytes memory encodedTdxModuleIdentities) private view returns (TDXModuleIdentity[] memory tdxModuleIdentities) {
FmspcTcbHelper fmspcTcbHelper = FmspcTcbHelper(fmspcTcbHelperAddr);
bytes[] memory encodedTdxModuleIdentitiesArr = abi.decode(encodedTdxModuleIdentities, (bytes[]));
uint256 n = encodedTdxModuleIdentitiesArr.length;
tdxModuleIdentities = new TDXModuleIdentity[](n);
for (uint256 i = 0; i < n; ) {
tdxModuleIdentities[i] = fmspcTcbHelper.tdxModuleIdentityFromBytes(encodedTdxModuleIdentitiesArr[i]);
unchecked {
i++;
}
}
}

Expand Down
8 changes: 4 additions & 4 deletions contracts/bases/tcb/TCBInfoV3Base.sol
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ abstract contract TCBInfoV3Base is TCBInfoV2Base {
}
if (sgxTcbFound && sgxStatus != TCBStatus.TCB_REVOKED) {
if (teeTcbSvn != bytes16(0)) {
if (_isTdxTcbHigherOrEqual(teeTcbSvn, current.tdxSvns)) {
if (_isTdxTcbHigherOrEqual(teeTcbSvn, current.tdxComponentCpuSvns)) {
tdxTcbFound = true;
status = current.status;
tcbLevelSelected = i;
Expand Down Expand Up @@ -102,13 +102,13 @@ abstract contract TCBInfoV3Base is TCBInfoV2Base {
}
}

function _isTdxTcbHigherOrEqual(bytes16 teeTcbSvn, uint8[] memory tdxSvns) internal pure returns (bool) {
if (tdxSvns.length != CPUSVN_LENGTH) {
function _isTdxTcbHigherOrEqual(bytes16 teeTcbSvn, uint8[] memory tdxComponentCpuSvns) internal pure returns (bool) {
if (tdxComponentCpuSvns.length != CPUSVN_LENGTH) {
return false;
}

for (uint256 i = 0; i < CPUSVN_LENGTH; i++) {
if (uint8(teeTcbSvn[i]) < uint8(tdxSvns[i])) {
if (uint8(teeTcbSvn[i]) < uint8(tdxComponentCpuSvns[i])) {
return false;
}
}
Expand Down
5 changes: 5 additions & 0 deletions forge-test/AutomataDcapAttestationFeeTest.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,12 @@ contract AutomataDcapAttestationFeeTest is PCCSSetupBase, RiscZeroSetup {
assertEq(bp, CONFIGURED_BP);
}

bytes constant platformCrlDer =
hex"30820a6230820a08020101300a06082a8648ce3d04030230703122302006035504030c19496e74656c205347582050434b20506c6174666f726d204341311a3018060355040a0c11496e74656c20436f72706f726174696f6e3114301206035504070c0b53616e746120436c617261310b300906035504080c024341310b3009060355040613025553170d3234303632373133313733385a170d3234303732373133313733385a30820934303302146fc34e5023e728923435d61aa4b83c618166ad35170d3234303632373133313733385a300c300a0603551d1504030a01013034021500efae6e9715fca13b87e333e8261ed6d990a926ad170d3234303632373133313733385a300c300a0603551d1504030a01013034021500fd608648629cba73078b4d492f4b3ea741ad08cd170d3234303632373133313733385a300c300a0603551d1504030a010130340215008af924184e1d5afddd73c3d63a12f5e8b5737e56170d3234303632373133313733385a300c300a0603551d1504030a01013034021500b1257978cfa9ccdd0759abf8c5ca72fae3a78a9b170d3234303632373133313733385a300c300a0603551d1504030a01013033021474fea614a972be0e2843f2059835811ed872f9b3170d3234303632373133313733385a300c300a0603551d1504030a01013034021500f9c4ef56b3ab48d577e108baedf4bf88014214b9170d3234303632373133313733385a300c300a0603551d1504030a010130330214071de0778f9e5fc4f2878f30d6b07c9a30e6b30b170d3234303632373133313733385a300c300a0603551d1504030a01013034021500cde2424f972cea94ff239937f4d80c25029dd60b170d3234303632373133313733385a300c300a0603551d1504030a0101303302146c3319e5109b64507d3cf1132ce00349ef527319170d3234303632373133313733385a300c300a0603551d1504030a01013034021500df08d756b66a7497f43b5bb58ada04d3f4f7a937170d3234303632373133313733385a300c300a0603551d1504030a01013033021428af485b6cf67e409a39d5cb5aee4598f7a8fa7b170d3234303632373133313733385a300c300a0603551d1504030a01013034021500fb8b2daec092cada8aa9bc4ff2f1c20d0346668c170d3234303632373133313733385a300c300a0603551d1504030a01013034021500cd4850ac52bdcc69a6a6f058c8bc57bbd0b5f864170d3234303632373133313733385a300c300a0603551d1504030a01013034021500994dd3666f5275fb805f95dd02bd50cb2679d8ad170d3234303632373133313733385a300c300a0603551d1504030a0101303302140702136900252274d9035eedf5457462fad0ef4c170d3234303632373133313733385a300c300a0603551d1504030a01013033021461f2bf73e39b4e04aa27d801bd73d24319b5bf80170d3234303632373133313733385a300c300a0603551d1504030a0101303302143992be851b96902eff38959e6c2eff1b0651a4b5170d3234303632373133313733385a300c300a0603551d1504030a010130330214639f139a5040fdcff191e8a4fb1bf086ed603971170d3234303632373133313733385a300c300a0603551d1504030a01013034021500959d533f9249dc1e513544cdc830bf19b7f1f301170d3234303632373133313733385a300c300a0603551d1504030a0101303302140fda43a00b68ea79b7c2deaeac0b498bdfb2af90170d3234303632373133313733385a300c300a0603551d1504030a010130340215009d67753b81e47090aea763fbec4c4549bcdb9933170d3234303632373133313733385a300c300a0603551d1504030a01013033021434bfbb7a1d9c568147e118b614f7b76ed3ef68df170d3234303632373133313733385a300c300a0603551d1504030a0101303402150085d3c9381b77a7e04d119c9e5ad6749ff3ffab87170d3234303632373133313733385a300c300a0603551d1504030a0101303402150093887ca4411e7a923bd1fed2819b2949f201b5b4170d3234303632373133313733385a300c300a0603551d1504030a0101303302142498dc6283930996fd8bf23a37acbe26a3bed457170d3234303632373133313733385a300c300a0603551d1504030a010130340215008a66f1a749488667689cc3903ac54c662b712e73170d3234303632373133313733385a300c300a0603551d1504030a01013034021500afc13610bdd36cb7985d106481a880d3a01fda07170d3234303632373133313733385a300c300a0603551d1504030a01013034021500efe04b2c33d036aac96ca673bf1e9a47b64d5cbb170d3234303632373133313733385a300c300a0603551d1504030a0101303402150083d9ac8d8bb509d1c6c809ad712e8430559ed7f3170d3234303632373133313733385a300c300a0603551d1504030a0101303302147931fd50b5071c1bbfc5b7b6ded8b45b9d8b8529170d3234303632373133313733385a300c300a0603551d1504030a0101303302141fa20e2970bde5d57f7b8ddf8339484e1f1d0823170d3234303632373133313733385a300c300a0603551d1504030a0101303302141e87b2c3b32d8d23e411cef34197b95af0c8adf5170d3234303632373133313733385a300c300a0603551d1504030a010130340215009afd2ee90a473550a167d996911437c7502d1f09170d3234303632373133313733385a300c300a0603551d1504030a0101303302144481b0f11728a13b696d3ea9c770a0b15ec58dda170d3234303632373133313733385a300c300a0603551d1504030a01013034021500a7859f57982ef0e67d37bc8ef2ef5ac835ff1aa9170d3234303632373133313733385a300c300a0603551d1504030a0101303302147ae37748a9f912f4c63ba7ab07c593ce1d1d1181170d3234303632373133313733385a300c300a0603551d1504030a01013033021413884b33269938c195aa170fca75da177538df0b170d3234303632373133313733385a300c300a0603551d1504030a0101303302142c3cc6fe9279db1516d5ce39f2a898cda5a175e1170d3234303632373133313733385a300c300a0603551d1504030a010130330214717948687509234be979e4b7dce6f31bef64b68c170d3234303632373133313733385a300c300a0603551d1504030a010130340215009d76ef2c39c136e8658b6e7396b1d7445a27631f170d3234303632373133313733385a300c300a0603551d1504030a01013034021500c3e025fca995f36f59b48467939e3e34e6361a6f170d3234303632373133313733385a300c300a0603551d1504030a010130340215008c5f6b3257da05b17429e2e61ba965d67330606a170d3234303632373133313733385a300c300a0603551d1504030a01013034021500a17c51722ec1e0c3278fe8bdf052059cbec4e648170d3234303632373133313733385a300c300a0603551d1504030a0101a02f302d300a0603551d140403020101301f0603551d23041830168014956f5dcdbd1be1e94049c9d4f433ce01570bde54300a06082a8648ce3d04030203480030450220020322ffb92ae4bddb43c36c845e51e0f68368b94c82d2ca31345fa774068864022100c3251194239d58d449fec2c5abbbc9a81934f9d205150e0a726e06c29c75cdf9";

function testTDXQuoteV4OnChainAttestationWithFee() public {
pcsDao.upsertPckCrl(CA.PLATFORM, platformCrlDer);

// pinned June 15th,2024 Midnight UTC
// bypassing expiry errors
vm.warp(1718409600);
Expand Down
6 changes: 6 additions & 0 deletions forge-test/AutomataDcapAttestationTest.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,9 @@ contract AutomataDcapAttestationFeeTest is PCCSSetupBase, RiscZeroSetup {
PlonkSetup succinctPlonkSetup;
Groth16Setup succinctGroth16Setup;

bytes constant platformCrlDer =
hex"30820a6230820a08020101300a06082a8648ce3d04030230703122302006035504030c19496e74656c205347582050434b20506c6174666f726d204341311a3018060355040a0c11496e74656c20436f72706f726174696f6e3114301206035504070c0b53616e746120436c617261310b300906035504080c024341310b3009060355040613025553170d3234303632373133313733385a170d3234303732373133313733385a30820934303302146fc34e5023e728923435d61aa4b83c618166ad35170d3234303632373133313733385a300c300a0603551d1504030a01013034021500efae6e9715fca13b87e333e8261ed6d990a926ad170d3234303632373133313733385a300c300a0603551d1504030a01013034021500fd608648629cba73078b4d492f4b3ea741ad08cd170d3234303632373133313733385a300c300a0603551d1504030a010130340215008af924184e1d5afddd73c3d63a12f5e8b5737e56170d3234303632373133313733385a300c300a0603551d1504030a01013034021500b1257978cfa9ccdd0759abf8c5ca72fae3a78a9b170d3234303632373133313733385a300c300a0603551d1504030a01013033021474fea614a972be0e2843f2059835811ed872f9b3170d3234303632373133313733385a300c300a0603551d1504030a01013034021500f9c4ef56b3ab48d577e108baedf4bf88014214b9170d3234303632373133313733385a300c300a0603551d1504030a010130330214071de0778f9e5fc4f2878f30d6b07c9a30e6b30b170d3234303632373133313733385a300c300a0603551d1504030a01013034021500cde2424f972cea94ff239937f4d80c25029dd60b170d3234303632373133313733385a300c300a0603551d1504030a0101303302146c3319e5109b64507d3cf1132ce00349ef527319170d3234303632373133313733385a300c300a0603551d1504030a01013034021500df08d756b66a7497f43b5bb58ada04d3f4f7a937170d3234303632373133313733385a300c300a0603551d1504030a01013033021428af485b6cf67e409a39d5cb5aee4598f7a8fa7b170d3234303632373133313733385a300c300a0603551d1504030a01013034021500fb8b2daec092cada8aa9bc4ff2f1c20d0346668c170d3234303632373133313733385a300c300a0603551d1504030a01013034021500cd4850ac52bdcc69a6a6f058c8bc57bbd0b5f864170d3234303632373133313733385a300c300a0603551d1504030a01013034021500994dd3666f5275fb805f95dd02bd50cb2679d8ad170d3234303632373133313733385a300c300a0603551d1504030a0101303302140702136900252274d9035eedf5457462fad0ef4c170d3234303632373133313733385a300c300a0603551d1504030a01013033021461f2bf73e39b4e04aa27d801bd73d24319b5bf80170d3234303632373133313733385a300c300a0603551d1504030a0101303302143992be851b96902eff38959e6c2eff1b0651a4b5170d3234303632373133313733385a300c300a0603551d1504030a010130330214639f139a5040fdcff191e8a4fb1bf086ed603971170d3234303632373133313733385a300c300a0603551d1504030a01013034021500959d533f9249dc1e513544cdc830bf19b7f1f301170d3234303632373133313733385a300c300a0603551d1504030a0101303302140fda43a00b68ea79b7c2deaeac0b498bdfb2af90170d3234303632373133313733385a300c300a0603551d1504030a010130340215009d67753b81e47090aea763fbec4c4549bcdb9933170d3234303632373133313733385a300c300a0603551d1504030a01013033021434bfbb7a1d9c568147e118b614f7b76ed3ef68df170d3234303632373133313733385a300c300a0603551d1504030a0101303402150085d3c9381b77a7e04d119c9e5ad6749ff3ffab87170d3234303632373133313733385a300c300a0603551d1504030a0101303402150093887ca4411e7a923bd1fed2819b2949f201b5b4170d3234303632373133313733385a300c300a0603551d1504030a0101303302142498dc6283930996fd8bf23a37acbe26a3bed457170d3234303632373133313733385a300c300a0603551d1504030a010130340215008a66f1a749488667689cc3903ac54c662b712e73170d3234303632373133313733385a300c300a0603551d1504030a01013034021500afc13610bdd36cb7985d106481a880d3a01fda07170d3234303632373133313733385a300c300a0603551d1504030a01013034021500efe04b2c33d036aac96ca673bf1e9a47b64d5cbb170d3234303632373133313733385a300c300a0603551d1504030a0101303402150083d9ac8d8bb509d1c6c809ad712e8430559ed7f3170d3234303632373133313733385a300c300a0603551d1504030a0101303302147931fd50b5071c1bbfc5b7b6ded8b45b9d8b8529170d3234303632373133313733385a300c300a0603551d1504030a0101303302141fa20e2970bde5d57f7b8ddf8339484e1f1d0823170d3234303632373133313733385a300c300a0603551d1504030a0101303302141e87b2c3b32d8d23e411cef34197b95af0c8adf5170d3234303632373133313733385a300c300a0603551d1504030a010130340215009afd2ee90a473550a167d996911437c7502d1f09170d3234303632373133313733385a300c300a0603551d1504030a0101303302144481b0f11728a13b696d3ea9c770a0b15ec58dda170d3234303632373133313733385a300c300a0603551d1504030a01013034021500a7859f57982ef0e67d37bc8ef2ef5ac835ff1aa9170d3234303632373133313733385a300c300a0603551d1504030a0101303302147ae37748a9f912f4c63ba7ab07c593ce1d1d1181170d3234303632373133313733385a300c300a0603551d1504030a01013033021413884b33269938c195aa170fca75da177538df0b170d3234303632373133313733385a300c300a0603551d1504030a0101303302142c3cc6fe9279db1516d5ce39f2a898cda5a175e1170d3234303632373133313733385a300c300a0603551d1504030a010130330214717948687509234be979e4b7dce6f31bef64b68c170d3234303632373133313733385a300c300a0603551d1504030a010130340215009d76ef2c39c136e8658b6e7396b1d7445a27631f170d3234303632373133313733385a300c300a0603551d1504030a01013034021500c3e025fca995f36f59b48467939e3e34e6361a6f170d3234303632373133313733385a300c300a0603551d1504030a010130340215008c5f6b3257da05b17429e2e61ba965d67330606a170d3234303632373133313733385a300c300a0603551d1504030a01013034021500a17c51722ec1e0c3278fe8bdf052059cbec4e648170d3234303632373133313733385a300c300a0603551d1504030a0101a02f302d300a0603551d140403020101301f0603551d23041830168014956f5dcdbd1be1e94049c9d4f433ce01570bde54300a06082a8648ce3d04030203480030450220020322ffb92ae4bddb43c36c845e51e0f68368b94c82d2ca31345fa774068864022100c3251194239d58d449fec2c5abbbc9a81934f9d205150e0a726e06c29c75cdf9";

function setUp() public override {
super.setUp();
vm.startPrank(admin);
Expand Down Expand Up @@ -49,6 +52,7 @@ contract AutomataDcapAttestationFeeTest is PCCSSetupBase, RiscZeroSetup {
string memory qeIdPath = "/forge-test/assets/0624/identity.json";
qeIdDaoUpsert(3, qeIdPath);
fmspcTcbDaoUpsert(tcbInfoPath);
pcsDao.upsertPckCrl(CA.PLATFORM, platformCrlDer);

// deploy and configure QuoteV3Verifier on the Attestation contract
quoteVerifier = new V3QuoteVerifier(P256_VERIFIER, address(pccsRouter));
Expand All @@ -67,6 +71,8 @@ contract AutomataDcapAttestationFeeTest is PCCSSetupBase, RiscZeroSetup {
}

function testTDXQuoteV4OnChainAttestation() public {
pcsDao.upsertPckCrl(CA.PLATFORM, platformCrlDer);

// pinned June 15th,2024 Midnight UTC
// bypassing expiry errors
vm.warp(1718409600);
Expand Down
Loading

0 comments on commit 560c208

Please sign in to comment.