remove commentout in contract

This commit is contained in:
motemotech
2025-01-11 04:00:31 +09:00
parent 9130551788
commit 2258cb2cd1
4 changed files with 381 additions and 381 deletions

View File

@@ -1,250 +1,250 @@
// // SPDX-License-Identifier: MIT
// pragma solidity ^0.8.28;
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.28;
// import {IGenericVerifier} from "./interfaces/IGenericVerifier.sol";
// import {IOpenPassportVerifier} from "./interfaces/IOpenPassportVerifier.sol";
// import "./constants/OpenPassportConstants.sol";
// import "./libraries/OpenPassportFormatter.sol";
// import "./libraries/Dg1Disclosure.sol";
// import "./libraries/OpenPassportAttributeSelector.sol";
// import "./libraries/OpenPassportAttributeHandler.sol";
import {IGenericVerifier} from "./interfaces/IGenericVerifier.sol";
import {IOpenPassportVerifier} from "./interfaces/IOpenPassportVerifier.sol";
import "./constants/OpenPassportConstants.sol";
import "./libraries/OpenPassportFormatter.sol";
import "./libraries/Dg1Disclosure.sol";
import "./libraries/OpenPassportAttributeSelector.sol";
import "./libraries/OpenPassportAttributeHandler.sol";
// contract OpenPassportVerifier is IOpenPassportVerifier {
contract OpenPassportVerifier is IOpenPassportVerifier {
// IGenericVerifier public genericVerifier;
IGenericVerifier public genericVerifier;
// constructor (address _genericVerifier) {
// genericVerifier = IGenericVerifier(_genericVerifier);
// }
constructor (address _genericVerifier) {
genericVerifier = IGenericVerifier(_genericVerifier);
}
// function discloseIssuingState(
// OpenPassportAttestation memory attestation
// ) public returns (string memory) {
// uint256 selector = OpenPassportAttributeSelector.ISSUING_STATE_SELECTOR;
// PassportAttributes memory attrs = verifyAndDiscloseAttributes(
// attestation,
// selector
// );
// emit IssuingStateDisclosed(attrs.issuingState);
// return attrs.issuingState;
// }
function discloseIssuingState(
OpenPassportAttestation memory attestation
) public returns (string memory) {
uint256 selector = OpenPassportAttributeSelector.ISSUING_STATE_SELECTOR;
PassportAttributes memory attrs = verifyAndDiscloseAttributes(
attestation,
selector
);
emit IssuingStateDisclosed(attrs.issuingState);
return attrs.issuingState;
}
// function discloseName(
// OpenPassportAttestation memory attestation
// ) public returns (string memory) {
// uint256 selector = OpenPassportAttributeSelector.NAME_SELECTOR;
// PassportAttributes memory attrs = verifyAndDiscloseAttributes(
// attestation,
// selector
// );
// emit NameDisclosed(attrs.name);
// return attrs.name;
// }
function discloseName(
OpenPassportAttestation memory attestation
) public returns (string memory) {
uint256 selector = OpenPassportAttributeSelector.NAME_SELECTOR;
PassportAttributes memory attrs = verifyAndDiscloseAttributes(
attestation,
selector
);
emit NameDisclosed(attrs.name);
return attrs.name;
}
// function disclosePassportNumber(
// OpenPassportAttestation memory attestation
// ) public returns (string memory) {
// uint256 selector = OpenPassportAttributeSelector.PASSPORT_NUMBER_SELECTOR;
// PassportAttributes memory attrs = verifyAndDiscloseAttributes(
// attestation,
// selector
// );
// emit PassportNumberDisclosed(attrs.passportNumber);
// return attrs.passportNumber;
// }
function disclosePassportNumber(
OpenPassportAttestation memory attestation
) public returns (string memory) {
uint256 selector = OpenPassportAttributeSelector.PASSPORT_NUMBER_SELECTOR;
PassportAttributes memory attrs = verifyAndDiscloseAttributes(
attestation,
selector
);
emit PassportNumberDisclosed(attrs.passportNumber);
return attrs.passportNumber;
}
// function discloseNationality(
// OpenPassportAttestation memory attestation
// ) public returns (string memory) {
// uint256 selector = OpenPassportAttributeSelector.NATIONALITY_SELECTOR;
// PassportAttributes memory attrs = verifyAndDiscloseAttributes(
// attestation,
// selector
// );
// emit NationalityDisclosed(attrs.nationality);
// return attrs.nationality;
// }
function discloseNationality(
OpenPassportAttestation memory attestation
) public returns (string memory) {
uint256 selector = OpenPassportAttributeSelector.NATIONALITY_SELECTOR;
PassportAttributes memory attrs = verifyAndDiscloseAttributes(
attestation,
selector
);
emit NationalityDisclosed(attrs.nationality);
return attrs.nationality;
}
// function discloseDateOfBirth(
// OpenPassportAttestation memory attestation
// ) public returns (string memory) {
// uint256 selector = OpenPassportAttributeSelector.DATE_OF_BIRTH_SELECTOR;
// PassportAttributes memory attrs = verifyAndDiscloseAttributes(
// attestation,
// selector
// );
// emit DateOfBirthDisclosed(attrs.dateOfBirth);
// return attrs.dateOfBirth;
// }
function discloseDateOfBirth(
OpenPassportAttestation memory attestation
) public returns (string memory) {
uint256 selector = OpenPassportAttributeSelector.DATE_OF_BIRTH_SELECTOR;
PassportAttributes memory attrs = verifyAndDiscloseAttributes(
attestation,
selector
);
emit DateOfBirthDisclosed(attrs.dateOfBirth);
return attrs.dateOfBirth;
}
// function discloseGender(
// OpenPassportAttestation memory attestation
// ) public returns (string memory) {
// uint256 selector = OpenPassportAttributeSelector.GENDER_SELECTOR;
// PassportAttributes memory attrs = verifyAndDiscloseAttributes(
// attestation,
// selector
// );
// emit GenderDisclosed(attrs.gender);
// return attrs.gender;
// }
function discloseGender(
OpenPassportAttestation memory attestation
) public returns (string memory) {
uint256 selector = OpenPassportAttributeSelector.GENDER_SELECTOR;
PassportAttributes memory attrs = verifyAndDiscloseAttributes(
attestation,
selector
);
emit GenderDisclosed(attrs.gender);
return attrs.gender;
}
// function discloseExpiryDate(
// OpenPassportAttestation memory attestation
// ) public returns (string memory) {
// uint256 selector = OpenPassportAttributeSelector.EXPIRY_DATE_SELECTOR;
// PassportAttributes memory attrs = verifyAndDiscloseAttributes(
// attestation,
// selector
// );
// emit ExpiryDateDisclosed(attrs.expiryDate);
// return attrs.expiryDate;
// }
function discloseExpiryDate(
OpenPassportAttestation memory attestation
) public returns (string memory) {
uint256 selector = OpenPassportAttributeSelector.EXPIRY_DATE_SELECTOR;
PassportAttributes memory attrs = verifyAndDiscloseAttributes(
attestation,
selector
);
emit ExpiryDateDisclosed(attrs.expiryDate);
return attrs.expiryDate;
}
// function discloseOlderThan(
// OpenPassportAttestation memory attestation
// ) public returns (uint256) {
// uint256 selector = OpenPassportAttributeSelector.OLDER_THAN_SELECTOR;
// PassportAttributes memory attrs = verifyAndDiscloseAttributes(
// attestation,
// selector
// );
// emit OlderThanDisclosed(attrs.olderThan);
// return attrs.olderThan;
// }
function discloseOlderThan(
OpenPassportAttestation memory attestation
) public returns (uint256) {
uint256 selector = OpenPassportAttributeSelector.OLDER_THAN_SELECTOR;
PassportAttributes memory attrs = verifyAndDiscloseAttributes(
attestation,
selector
);
emit OlderThanDisclosed(attrs.olderThan);
return attrs.olderThan;
}
// function discloseOfacResult(
// OpenPassportAttestation memory attestation
// ) public returns (bool) {
// uint256 selector = OpenPassportAttributeSelector.OFAC_RESULT_SELECTOR;
// PassportAttributes memory attrs = verifyAndDiscloseAttributes(
// attestation,
// selector
// );
// emit OfacResultDisclosed(attrs.ofacResult);
// return attrs.ofacResult;
// }
function discloseOfacResult(
OpenPassportAttestation memory attestation
) public returns (bool) {
uint256 selector = OpenPassportAttributeSelector.OFAC_RESULT_SELECTOR;
PassportAttributes memory attrs = verifyAndDiscloseAttributes(
attestation,
selector
);
emit OfacResultDisclosed(attrs.ofacResult);
return attrs.ofacResult;
}
// function discloseForbiddenCountries(
// OpenPassportAttestation memory attestation
// ) public returns (bytes3[20] memory) {
// uint256 selector = OpenPassportAttributeSelector.FORBIDDEN_COUNTRIES_SELECTOR;
// PassportAttributes memory attrs = verifyAndDiscloseAttributes(
// attestation,
// selector
// );
// emit ForbiddenCountriesDisclosed(attrs.forbiddenCountries);
// return attrs.forbiddenCountries;
// }
function discloseForbiddenCountries(
OpenPassportAttestation memory attestation
) public returns (bytes3[20] memory) {
uint256 selector = OpenPassportAttributeSelector.FORBIDDEN_COUNTRIES_SELECTOR;
PassportAttributes memory attrs = verifyAndDiscloseAttributes(
attestation,
selector
);
emit ForbiddenCountriesDisclosed(attrs.forbiddenCountries);
return attrs.forbiddenCountries;
}
// function verifyAndDiscloseAttributes(
// OpenPassportAttestation memory attestation,
// uint256 attributeSelector
// ) public returns (PassportAttributes memory) {
// verify(attestation);
// uint[3] memory revealedData_packed;
// for (uint256 i = 0; i < 3; i++) {
// if (attestation.pProof.signatureType == IGenericVerifier.SignatureType.RSA) {
// revealedData_packed[i] = attestation.pProof.pubSignalsRSA[OpenPassportConstants.PROVE_RSA_REVEALED_DATA_PACKED_INDEX + i];
// } else if (attestation.pProof.signatureType == IGenericVerifier.SignatureType.ECDSA) {
// revealedData_packed[i] = attestation.pProof.pubSignalsECDSA[OpenPassportConstants.PROVE_ECDSA_REVEALED_DATA_PACKED_INDEX + i];
// } else {
// revert INVALID_SIGNATURE_TYPE();
// }
// }
// bytes memory charcodes = OpenPassportFormatter.fieldElementsToBytes(
// revealedData_packed
// );
function verifyAndDiscloseAttributes(
OpenPassportAttestation memory attestation,
uint256 attributeSelector
) public returns (PassportAttributes memory) {
verify(attestation);
uint[3] memory revealedData_packed;
for (uint256 i = 0; i < 3; i++) {
if (attestation.pProof.signatureType == IGenericVerifier.SignatureType.RSA) {
revealedData_packed[i] = attestation.pProof.pubSignalsRSA[OpenPassportConstants.PROVE_RSA_REVEALED_DATA_PACKED_INDEX + i];
} else if (attestation.pProof.signatureType == IGenericVerifier.SignatureType.ECDSA) {
revealedData_packed[i] = attestation.pProof.pubSignalsECDSA[OpenPassportConstants.PROVE_ECDSA_REVEALED_DATA_PACKED_INDEX + i];
} else {
revert INVALID_SIGNATURE_TYPE();
}
}
bytes memory charcodes = OpenPassportFormatter.fieldElementsToBytes(
revealedData_packed
);
// PassportAttributes memory attrs;
PassportAttributes memory attrs;
// if ((attributeSelector & OpenPassportAttributeSelector.ISSUING_STATE_SELECTOR) != 0) {
// attrs.issuingState = Dg1Disclosure.getIssuingState(charcodes);
// }
if ((attributeSelector & OpenPassportAttributeSelector.ISSUING_STATE_SELECTOR) != 0) {
attrs.issuingState = Dg1Disclosure.getIssuingState(charcodes);
}
// if ((attributeSelector & OpenPassportAttributeSelector.NAME_SELECTOR) != 0) {
// attrs.name = Dg1Disclosure.getName(charcodes);
// }
if ((attributeSelector & OpenPassportAttributeSelector.NAME_SELECTOR) != 0) {
attrs.name = Dg1Disclosure.getName(charcodes);
}
// if ((attributeSelector & OpenPassportAttributeSelector.PASSPORT_NUMBER_SELECTOR) != 0) {
// attrs.passportNumber = Dg1Disclosure.getPassportNumber(charcodes);
// }
if ((attributeSelector & OpenPassportAttributeSelector.PASSPORT_NUMBER_SELECTOR) != 0) {
attrs.passportNumber = Dg1Disclosure.getPassportNumber(charcodes);
}
// if ((attributeSelector & OpenPassportAttributeSelector.NATIONALITY_SELECTOR) != 0) {
// attrs.nationality = Dg1Disclosure.getNationality(charcodes);
// }
if ((attributeSelector & OpenPassportAttributeSelector.NATIONALITY_SELECTOR) != 0) {
attrs.nationality = Dg1Disclosure.getNationality(charcodes);
}
// if ((attributeSelector & OpenPassportAttributeSelector.DATE_OF_BIRTH_SELECTOR) != 0) {
// attrs.dateOfBirth = Dg1Disclosure.getDateOfBirth(charcodes);
// }
if ((attributeSelector & OpenPassportAttributeSelector.DATE_OF_BIRTH_SELECTOR) != 0) {
attrs.dateOfBirth = Dg1Disclosure.getDateOfBirth(charcodes);
}
// if ((attributeSelector & OpenPassportAttributeSelector.GENDER_SELECTOR) != 0) {
// attrs.gender = Dg1Disclosure.getGender(charcodes);
// }
if ((attributeSelector & OpenPassportAttributeSelector.GENDER_SELECTOR) != 0) {
attrs.gender = Dg1Disclosure.getGender(charcodes);
}
// if ((attributeSelector & OpenPassportAttributeSelector.EXPIRY_DATE_SELECTOR) != 0) {
// attrs.expiryDate = Dg1Disclosure.getExpiryDate(charcodes);
// }
if ((attributeSelector & OpenPassportAttributeSelector.EXPIRY_DATE_SELECTOR) != 0) {
attrs.expiryDate = Dg1Disclosure.getExpiryDate(charcodes);
}
// if ((attributeSelector & OpenPassportAttributeSelector.OLDER_THAN_SELECTOR) != 0) {
// attrs.olderThan = OpenPassportAttributeHandler.extractOlderThan(attestation);
// }
if ((attributeSelector & OpenPassportAttributeSelector.OLDER_THAN_SELECTOR) != 0) {
attrs.olderThan = OpenPassportAttributeHandler.extractOlderThan(attestation);
}
// if ((attributeSelector & OpenPassportAttributeSelector.OFAC_RESULT_SELECTOR) != 0) {
// attrs.ofacResult = OpenPassportAttributeHandler.extractOfacResult(attestation);
// }
if ((attributeSelector & OpenPassportAttributeSelector.OFAC_RESULT_SELECTOR) != 0) {
attrs.ofacResult = OpenPassportAttributeHandler.extractOfacResult(attestation);
}
// if ((attributeSelector & OpenPassportAttributeSelector.FORBIDDEN_COUNTRIES_SELECTOR) != 0) {
// attrs.forbiddenCountries = OpenPassportAttributeHandler.extractForbiddenCountries(attestation);
// }
if ((attributeSelector & OpenPassportAttributeSelector.FORBIDDEN_COUNTRIES_SELECTOR) != 0) {
attrs.forbiddenCountries = OpenPassportAttributeHandler.extractForbiddenCountries(attestation);
}
// return attrs;
// }
return attrs;
}
// function verify(
// OpenPassportAttestation memory attestation
// ) public returns (IGenericVerifier.ProveCircuitProof memory) {
function verify(
OpenPassportAttestation memory attestation
) public returns (IGenericVerifier.ProveCircuitProof memory) {
// uint[6] memory dateNum;
// for (uint i = 0; i < 6; i++) {
// dateNum[i] = attestation.pProof.pubSignalsRSA[OpenPassportConstants.PROVE_RSA_CURRENT_DATE_INDEX + i];
// }
// uint currentTimestamp = OpenPassportFormatter.proofDateToUnixTimestamp(dateNum);
uint[6] memory dateNum;
for (uint i = 0; i < 6; i++) {
dateNum[i] = attestation.pProof.pubSignalsRSA[OpenPassportConstants.PROVE_RSA_CURRENT_DATE_INDEX + i];
}
uint currentTimestamp = OpenPassportFormatter.proofDateToUnixTimestamp(dateNum);
// // Check that the current date is within a +/- 1 day range
// if(
// currentTimestamp < block.timestamp - 1 days ||
// currentTimestamp > block.timestamp + 1 days
// ) {
// revert CURRENT_DATE_NOT_IN_VALID_RANGE();
// }
// Check that the current date is within a +/- 1 day range
if(
currentTimestamp < block.timestamp - 1 days ||
currentTimestamp > block.timestamp + 1 days
) {
revert CURRENT_DATE_NOT_IN_VALID_RANGE();
}
// // check blinded dcs
// bytes memory blindedDscCommitment;
// if (attestation.pProof.signatureType == IGenericVerifier.SignatureType.RSA) {
// blindedDscCommitment = abi.encodePacked(attestation.pProof.pubSignalsRSA[OpenPassportConstants.PROVE_RSA_BLINDED_DSC_COMMITMENT_INDEX]);
// } else if (attestation.pProof.signatureType == IGenericVerifier.SignatureType.ECDSA) {
// blindedDscCommitment = abi.encodePacked(attestation.pProof.pubSignalsECDSA[OpenPassportConstants.PROVE_ECDSA_BLINDED_DSC_COMMITMENT_INDEX]);
// }
// check blinded dcs
bytes memory blindedDscCommitment;
if (attestation.pProof.signatureType == IGenericVerifier.SignatureType.RSA) {
blindedDscCommitment = abi.encodePacked(attestation.pProof.pubSignalsRSA[OpenPassportConstants.PROVE_RSA_BLINDED_DSC_COMMITMENT_INDEX]);
} else if (attestation.pProof.signatureType == IGenericVerifier.SignatureType.ECDSA) {
blindedDscCommitment = abi.encodePacked(attestation.pProof.pubSignalsECDSA[OpenPassportConstants.PROVE_ECDSA_BLINDED_DSC_COMMITMENT_INDEX]);
}
// // TODO: After merged new RSA circuits and fix modal server, fix this code
// // if (
// // keccak256(blindedDscCommitment) !=
// // keccak256(abi.encodePacked(attestation.dProof.pubSignals[OpenPassportConstants.DSC_BLINDED_DSC_COMMITMENT_INDEX]))
// // ) {
// // revert UNEQUAL_BLINDED_DSC_COMMITMENT();
// // }
// TODO: After merged new RSA circuits and fix modal server, fix this code
// if (
// keccak256(blindedDscCommitment) !=
// keccak256(abi.encodePacked(attestation.dProof.pubSignals[OpenPassportConstants.DSC_BLINDED_DSC_COMMITMENT_INDEX]))
// ) {
// revert UNEQUAL_BLINDED_DSC_COMMITMENT();
// }
// if (!genericVerifier.verifyWithProveVerifier(attestation.proveVerifierId, attestation.pProof)) {
// revert INVALID_PROVE_PROOF();
// }
if (!genericVerifier.verifyWithProveVerifier(attestation.proveVerifierId, attestation.pProof)) {
revert INVALID_PROVE_PROOF();
}
// if (!genericVerifier.verifyWithDscVerifier(attestation.dscVerifierId, attestation.dProof)) {
// revert INVALID_DSC_PROOF();
// }
if (!genericVerifier.verifyWithDscVerifier(attestation.dscVerifierId, attestation.dProof)) {
revert INVALID_DSC_PROOF();
}
// return attestation.pProof;
// }
return attestation.pProof;
}
// }
}

View File

@@ -1,105 +1,105 @@
// // SPDX-License-Identifier: MIT
// SPDX-License-Identifier: MIT
// pragma solidity ^0.8.3;
pragma solidity ^0.8.3;
// import {IOpenPassportRegister} from "../interfaces/IOpenPassportRegister.sol";
// import {OpenPassportRegistry} from "./OpenPassportRegistry.sol";
// import {IOpenPassportVerifier} from "../interfaces/IOpenPassportVerifier.sol";
// import {IGenericVerifier} from "../interfaces/IGenericVerifier.sol";
// import {Base64} from "../libraries/Base64.sol";
// import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
// import "../constants/OpenPassportConstants.sol";
// import "@openzeppelin/contracts/utils/Strings.sol";
// import "@zk-kit/imt.sol/internal/InternalLeanIMT.sol";
import {IOpenPassportRegister} from "../interfaces/IOpenPassportRegister.sol";
import {OpenPassportRegistry} from "./OpenPassportRegistry.sol";
import {IOpenPassportVerifier} from "../interfaces/IOpenPassportVerifier.sol";
import {IGenericVerifier} from "../interfaces/IGenericVerifier.sol";
import {Base64} from "../libraries/Base64.sol";
import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
import "../constants/OpenPassportConstants.sol";
import "@openzeppelin/contracts/utils/Strings.sol";
import "@zk-kit/imt.sol/internal/InternalLeanIMT.sol";
// contract OpenPassportRegister is IOpenPassportRegister, Ownable {
// OpenPassportRegistry public immutable openPassportRegistry;
// IOpenPassportVerifier public immutable openPassportVerifier;
contract OpenPassportRegister is IOpenPassportRegister, Ownable {
OpenPassportRegistry public immutable openPassportRegistry;
IOpenPassportVerifier public immutable openPassportVerifier;
// using Base64 for *;
// using Strings for uint256;
using Base64 for *;
using Strings for uint256;
// using InternalLeanIMT for LeanIMTData;
// LeanIMTData internal imt;
using InternalLeanIMT for LeanIMTData;
LeanIMTData internal imt;
// // poseidon("E-PASSPORT")
// bytes32 public attestationId =
// bytes32(
// 0x12d57183e0a41615471a14e5a93c87b9db757118c1d7a6a9f73106819d656f24
// );
// poseidon("E-PASSPORT")
bytes32 public attestationId =
bytes32(
0x12d57183e0a41615471a14e5a93c87b9db757118c1d7a6a9f73106819d656f24
);
// mapping(uint256 => bool) public nullifiers;
// mapping(uint256 => bool) public merkleRootsCreated;
mapping(uint256 => bool) public nullifiers;
mapping(uint256 => bool) public merkleRootsCreated;
// constructor(OpenPassportRegistry _openPassportRegistry, address _openPassportVerifier) Ownable(msg.sender) {
// openPassportRegistry = _openPassportRegistry;
// openPassportVerifier = IOpenPassportVerifier(_openPassportVerifier);
constructor(OpenPassportRegistry _openPassportRegistry, address _openPassportVerifier) Ownable(msg.sender) {
openPassportRegistry = _openPassportRegistry;
openPassportVerifier = IOpenPassportVerifier(_openPassportVerifier);
// transferOwnership(msg.sender);
// }
transferOwnership(msg.sender);
}
// function registerCommitment(
// IOpenPassportVerifier.OpenPassportAttestation memory attestation
// ) external {
// openPassportVerifier.verify(attestation);
function registerCommitment(
IOpenPassportVerifier.OpenPassportAttestation memory attestation
) external {
openPassportVerifier.verify(attestation);
// if (!openPassportRegistry.checkRoot(bytes32(attestation.dProof.pubSignals[OpenPassportConstants.DSC_MERKLE_ROOT_INDEX]))) {
// revert("Register__InvalidMerkleRoot");
// }
if (!openPassportRegistry.checkRoot(bytes32(attestation.dProof.pubSignals[OpenPassportConstants.DSC_MERKLE_ROOT_INDEX]))) {
revert("Register__InvalidMerkleRoot");
}
// // if (nullifiers[proof.nullifier]) {
// // revert("YouAreUsingTheSameNullifierTwice");
// // }
// if (nullifiers[proof.nullifier]) {
// revert("YouAreUsingTheSameNullifierTwice");
// }
// // if (bytes32(attestation.pProof.pubSignals[OpenPassportConstants.PROVE_RSA_USER_IDENTIFIER_INDEX]) != attestationId) {
// // revert("Register__InvalidAttestationId");
// // }
// if (bytes32(attestation.pProof.pubSignals[OpenPassportConstants.PROVE_RSA_USER_IDENTIFIER_INDEX]) != attestationId) {
// revert("Register__InvalidAttestationId");
// }
// if (attestation.pProof.signatureType == IGenericVerifier.SignatureType.RSA) {
// nullifiers[attestation.pProof.pubSignalsRSA[OpenPassportConstants.PROVE_RSA_COMMITMENT_INDEX]] = true;
// _addCommitment(attestation.pProof.pubSignalsRSA[OpenPassportConstants.PROVE_RSA_COMMITMENT_INDEX]);
// emit ProofValidated(
// attestation.dProof.pubSignals[OpenPassportConstants.DSC_MERKLE_ROOT_INDEX],
// attestation.pProof.pubSignalsRSA[OpenPassportConstants.PROVE_RSA_NULLIFIER_INDEX],
// attestation.pProof.pubSignalsRSA[OpenPassportConstants.PROVE_RSA_COMMITMENT_INDEX]
// );
// } else if (attestation.pProof.signatureType == IGenericVerifier.SignatureType.ECDSA) {
// nullifiers[attestation.pProof.pubSignalsECDSA[OpenPassportConstants.PROVE_ECDSA_COMMITMENT_INDEX]] = true;
// _addCommitment(attestation.pProof.pubSignalsECDSA[OpenPassportConstants.PROVE_ECDSA_COMMITMENT_INDEX]);
// emit ProofValidated(
// attestation.dProof.pubSignals[OpenPassportConstants.DSC_MERKLE_ROOT_INDEX],
// attestation.pProof.pubSignalsECDSA[OpenPassportConstants.PROVE_ECDSA_NULLIFIER_INDEX],
// attestation.pProof.pubSignalsECDSA[OpenPassportConstants.PROVE_ECDSA_COMMITMENT_INDEX]
// );
// } else {
// revert Register__InvalidProveProof();
// }
// }
if (attestation.pProof.signatureType == IGenericVerifier.SignatureType.RSA) {
nullifiers[attestation.pProof.pubSignalsRSA[OpenPassportConstants.PROVE_RSA_COMMITMENT_INDEX]] = true;
_addCommitment(attestation.pProof.pubSignalsRSA[OpenPassportConstants.PROVE_RSA_COMMITMENT_INDEX]);
emit ProofValidated(
attestation.dProof.pubSignals[OpenPassportConstants.DSC_MERKLE_ROOT_INDEX],
attestation.pProof.pubSignalsRSA[OpenPassportConstants.PROVE_RSA_NULLIFIER_INDEX],
attestation.pProof.pubSignalsRSA[OpenPassportConstants.PROVE_RSA_COMMITMENT_INDEX]
);
} else if (attestation.pProof.signatureType == IGenericVerifier.SignatureType.ECDSA) {
nullifiers[attestation.pProof.pubSignalsECDSA[OpenPassportConstants.PROVE_ECDSA_COMMITMENT_INDEX]] = true;
_addCommitment(attestation.pProof.pubSignalsECDSA[OpenPassportConstants.PROVE_ECDSA_COMMITMENT_INDEX]);
emit ProofValidated(
attestation.dProof.pubSignals[OpenPassportConstants.DSC_MERKLE_ROOT_INDEX],
attestation.pProof.pubSignalsECDSA[OpenPassportConstants.PROVE_ECDSA_NULLIFIER_INDEX],
attestation.pProof.pubSignalsECDSA[OpenPassportConstants.PROVE_ECDSA_COMMITMENT_INDEX]
);
} else {
revert Register__InvalidProveProof();
}
}
// function _addCommitment(uint256 commitment) internal {
// uint256 index = getMerkleTreeSize();
// uint256 imt_root = imt._insert(commitment);
// merkleRootsCreated[imt_root] = true;
// emit AddCommitment(index, commitment, imt_root);
// }
function _addCommitment(uint256 commitment) internal {
uint256 index = getMerkleTreeSize();
uint256 imt_root = imt._insert(commitment);
merkleRootsCreated[imt_root] = true;
emit AddCommitment(index, commitment, imt_root);
}
// function checkRoot(uint256 root) external view returns (bool) {
// return merkleRootsCreated[root];
// }
function checkRoot(uint256 root) external view returns (bool) {
return merkleRootsCreated[root];
}
// function getMerkleTreeSize() public view returns (uint256) {
// return imt.size;
// }
function getMerkleTreeSize() public view returns (uint256) {
return imt.size;
}
// function getMerkleRoot() public view returns (uint256) {
// return imt._root();
// }
function getMerkleRoot() public view returns (uint256) {
return imt._root();
}
// function indexOf(uint commitment) public view returns (uint256) {
// return imt._indexOf(commitment);
// }
function indexOf(uint commitment) public view returns (uint256) {
return imt._indexOf(commitment);
}
// function devAddCommitment(uint commitment) external onlyOwner {
// _addCommitment(commitment);
// }
// }
function devAddCommitment(uint commitment) external onlyOwner {
_addCommitment(commitment);
}
}

View File

@@ -1,26 +1,26 @@
// // SPDX-License-Identifier: MIT
// pragma solidity ^0.8.18;
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;
// import "hardhat/console.sol";
// import "@openzeppelin/contracts/access/Ownable.sol";
import "hardhat/console.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
// contract OpenPassportRegistry is Ownable {
// bytes32 public merkleRoot;
contract OpenPassportRegistry is Ownable {
bytes32 public merkleRoot;
// constructor(bytes32 _merkleRoot) Ownable(msg.sender) {
// merkleRoot = _merkleRoot;
// transferOwnership(msg.sender);
// }
constructor(bytes32 _merkleRoot) Ownable(msg.sender) {
merkleRoot = _merkleRoot;
transferOwnership(msg.sender);
}
// function update(bytes32 _merkleRoot) public onlyOwner {
// merkleRoot = _merkleRoot;
// }
function update(bytes32 _merkleRoot) public onlyOwner {
merkleRoot = _merkleRoot;
}
// function checkRoot(bytes32 _merkleRoot) public view returns (bool) {
// return merkleRoot == _merkleRoot;
// }
function checkRoot(bytes32 _merkleRoot) public view returns (bool) {
return merkleRoot == _merkleRoot;
}
// function getMerkleRoot() public view returns (bytes32) {
// return merkleRoot;
// }
// }
function getMerkleRoot() public view returns (bytes32) {
return merkleRoot;
}
}

View File

@@ -1,71 +1,71 @@
// //SPDX-License-Identifier: MIT
// pragma solidity ^0.8.28;
//SPDX-License-Identifier: MIT
pragma solidity ^0.8.28;
// import {IGenericVerifier, IRSAProveVerifier, IECDSAProveVerifier, IDscVerifier} from "../interfaces/IGenericVerifier.sol";
// import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
import {IGenericVerifier, IRSAProveVerifier, IECDSAProveVerifier, IDscVerifier} from "../interfaces/IGenericVerifier.sol";
import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
// contract GenericVerifier is IGenericVerifier, Ownable {
contract GenericVerifier is IGenericVerifier, Ownable {
// mapping (uint256 => address) public signatureTypeIdToVerifiers;
mapping (uint256 => address) public signatureTypeIdToVerifiers;
// constructor () Ownable(msg.sender) {}
constructor () Ownable(msg.sender) {}
// function verifyWithProveVerifier(
// uint256 signatureTypeId,
// ProveCircuitProof memory proof
// ) public view returns (bool) {
// bool result;
// if (proof.signatureType == SignatureType.RSA) {
// result = IRSAProveVerifier(signatureTypeIdToVerifiers[signatureTypeId])
// .verifyProof(
// proof.a,
// proof.b,
// proof.c,
// proof.pubSignalsRSA
// );
// } else if (proof.signatureType == SignatureType.ECDSA) {
// result = IECDSAProveVerifier(signatureTypeIdToVerifiers[signatureTypeId])
// .verifyProof(
// proof.a,
// proof.b,
// proof.c,
// proof.pubSignalsECDSA
// );
// } else {
// revert INVALID_SIGNATURE_TYPE();
// }
// return result;
// }
function verifyWithProveVerifier(
uint256 signatureTypeId,
ProveCircuitProof memory proof
) public view returns (bool) {
bool result;
if (proof.signatureType == SignatureType.RSA) {
result = IRSAProveVerifier(signatureTypeIdToVerifiers[signatureTypeId])
.verifyProof(
proof.a,
proof.b,
proof.c,
proof.pubSignalsRSA
);
} else if (proof.signatureType == SignatureType.ECDSA) {
result = IECDSAProveVerifier(signatureTypeIdToVerifiers[signatureTypeId])
.verifyProof(
proof.a,
proof.b,
proof.c,
proof.pubSignalsECDSA
);
} else {
revert INVALID_SIGNATURE_TYPE();
}
return result;
}
// function verifyWithDscVerifier(
// uint256 signatureTypeId,
// DscCircuitProof memory proof
// ) public view returns (bool) {
// bool result = IDscVerifier(signatureTypeIdToVerifiers[signatureTypeId])
// .verifyProof(
// proof.a,
// proof.b,
// proof.c,
// proof.pubSignals
// );
// return result;
// }
function verifyWithDscVerifier(
uint256 signatureTypeId,
DscCircuitProof memory proof
) public view returns (bool) {
bool result = IDscVerifier(signatureTypeIdToVerifiers[signatureTypeId])
.verifyProof(
proof.a,
proof.b,
proof.c,
proof.pubSignals
);
return result;
}
// // TODO: add batch update function
// function updateVerifier(
// VerificationType vType,
// uint256 signatureTypeId,
// address verifierAddress
// ) external onlyOwner {
// if (verifierAddress == address(0)) {
// revert ZERO_ADDRESS();
// }
// if (vType == VerificationType.Prove) {
// signatureTypeIdToVerifiers[signatureTypeId] = verifierAddress;
// }
// if (vType == VerificationType.Dsc) {
// signatureTypeIdToVerifiers[signatureTypeId] = verifierAddress;
// }
// }
// TODO: add batch update function
function updateVerifier(
VerificationType vType,
uint256 signatureTypeId,
address verifierAddress
) external onlyOwner {
if (verifierAddress == address(0)) {
revert ZERO_ADDRESS();
}
if (vType == VerificationType.Prove) {
signatureTypeIdToVerifiers[signatureTypeId] = verifierAddress;
}
if (vType == VerificationType.Dsc) {
signatureTypeIdToVerifiers[signatureTypeId] = verifierAddress;
}
}
// }
}