@@ -12,13 +12,27 @@ contract CannonRegistry is Storage, Ownable, UUPSImplementation {
12
12
error TooManyTags ();
13
13
14
14
event PackagePublish (bytes32 indexed name , bytes32 indexed version , bytes32 [] indexed tags , string url , address owner );
15
+ event PackageVerify (bytes32 indexed name , address indexed verifier );
16
+ event PackageUnverify (bytes32 indexed name , address indexed verifier );
15
17
16
18
uint public constant MIN_PACKAGE_NAME_LENGTH = 3 ;
17
19
18
20
function upgradeTo (address _newImplementation ) public override onlyOwner {
19
21
_upgradeTo (_newImplementation);
20
22
}
21
23
24
+ function addPackageVerifier (address _verifier ) external onlyOwner {
25
+ _store ().verifiers[_verifier] = true ;
26
+ }
27
+
28
+ function removePackageVerifier (address _verifier ) external onlyOwner {
29
+ _store ().verifiers[_verifier] = false ;
30
+ }
31
+
32
+ function isPackageVerifier (address _verifier ) external view returns (bool ) {
33
+ return _store ().verifiers[_verifier];
34
+ }
35
+
22
36
function validatePackageName (bytes32 _name ) public pure returns (bool ) {
23
37
// each character must be in the supported charset
24
38
@@ -121,6 +135,26 @@ contract CannonRegistry is Storage, Ownable, UUPSImplementation {
121
135
_p.nominatedOwner = address (0 );
122
136
}
123
137
138
+ function verifyPackage (bytes32 _packageName ) external {
139
+ address _verifier = msg .sender ;
140
+
141
+ if (! _store ().verifiers[_verifier]) {
142
+ revert Unauthorized ();
143
+ }
144
+
145
+ emit PackageVerify (_packageName, _verifier);
146
+ }
147
+
148
+ function unverifyPackage (bytes32 _packageName ) external {
149
+ address _verifier = msg .sender ;
150
+
151
+ if (! _store ().verifiers[_verifier]) {
152
+ revert Unauthorized ();
153
+ }
154
+
155
+ emit PackageUnverify (_packageName, _verifier);
156
+ }
157
+
124
158
function getPackageNominatedOwner (bytes32 _packageName ) external view returns (address ) {
125
159
return _store ().packages[_packageName].nominatedOwner;
126
160
}
0 commit comments