Skip to content

Commit 53f4288

Browse files
leopoldjoyOpenCode
andcommitted
refactor: use custom cert signature error
Co-authored-by: OpenCode <opencode-noreply@coinbase.com>
1 parent 3b8937a commit 53f4288

2 files changed

Lines changed: 13 additions & 11 deletions

File tree

src/CertManager.sol

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ contract CertManager is ICertManager {
1717
using LibAsn1Ptr for Asn1Ptr;
1818
using LibBytes for bytes;
1919

20+
error InvalidCertSignature();
21+
2022
event CertVerified(bytes32 indexed certHash);
2123
event CertRevoked(bytes32 indexed certHash);
2224
event CertUnrevoked(bytes32 indexed certHash);
@@ -557,17 +559,17 @@ contract CertManager is ICertManager {
557559
function _certSignature(bytes memory certificate, Asn1Ptr sigPtr) internal pure returns (bytes memory sigPacked) {
558560
Asn1Ptr sigBPtr = certificate.bitstring(sigPtr);
559561
Asn1Ptr sigRoot = certificate.rootOf(sigBPtr);
560-
require(certificate[sigRoot.header()] == 0x30, "invalid cert signature");
561-
require(
562-
sigRoot.header() + sigRoot.totalLength() == sigBPtr.content() + sigBPtr.length(), "invalid cert signature"
563-
);
562+
if (certificate[sigRoot.header()] != 0x30) revert InvalidCertSignature();
563+
if (sigRoot.header() + sigRoot.totalLength() != sigBPtr.content() + sigBPtr.length()) {
564+
revert InvalidCertSignature();
565+
}
564566
Asn1Ptr sigRPtr = certificate.firstChildOf(sigRoot);
565-
require(certificate[sigRPtr.header()] == 0x02, "invalid cert signature");
567+
if (certificate[sigRPtr.header()] != 0x02) revert InvalidCertSignature();
566568
Asn1Ptr sigSPtr = certificate.nextSiblingOf(sigRPtr);
567-
require(certificate[sigSPtr.header()] == 0x02, "invalid cert signature");
568-
require(
569-
sigSPtr.header() + sigSPtr.totalLength() == sigRoot.content() + sigRoot.length(), "invalid cert signature"
570-
);
569+
if (certificate[sigSPtr.header()] != 0x02) revert InvalidCertSignature();
570+
if (sigSPtr.header() + sigSPtr.totalLength() != sigRoot.content() + sigRoot.length()) {
571+
revert InvalidCertSignature();
572+
}
571573
(uint128 rhi, uint256 rlo) = certificate.uint384At(sigRPtr);
572574
(uint128 shi, uint256 slo) = certificate.uint384At(sigSPtr);
573575
sigPacked = abi.encodePacked(rhi, rlo, shi, slo);

test/CertManager.t.sol

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@ contract CertManagerTest is Test {
179179
(,, Asn1Ptr sigRoot,) = _certSignaturePtrs(mutated);
180180
mutated[sigRoot.header()] = 0x31; // constructed SET with the same r/s children.
181181

182-
vm.expectRevert("invalid cert signature");
182+
vm.expectRevert(CertManager.InvalidCertSignature.selector);
183183
cm.verifyCACertWithHints(mutated, rootHash, hints);
184184
}
185185

@@ -194,7 +194,7 @@ contract CertManagerTest is Test {
194194

195195
bytes memory mutated = _appendSignatureTrailingField(CB1);
196196

197-
vm.expectRevert("invalid cert signature");
197+
vm.expectRevert(CertManager.InvalidCertSignature.selector);
198198
cm.verifyCACertWithHints(mutated, rootHash, hints);
199199
}
200200

0 commit comments

Comments
 (0)