clean signature verifier

This commit is contained in:
motemotech
2025-01-15 19:53:19 +09:00
parent 0876e92797
commit 0b14455f93

View File

@@ -22,30 +22,40 @@ template SignatureVerifier(signatureAlgorithm, n, k) {
signal hashParsed[msg_len] <== HashParser(signatureAlgorithm, n, k)(hash);
if (signatureAlgorithm == 1) {
component rsa = VerifyRsa65537Pkcs1v1_5(n, k, 256);
if (
signatureAlgorithm == 1
|| signatureAlgorithm == 3
|| signatureAlgorithm == 10
|| signatureAlgorithm == 11
|| signatureAlgorithm == 14
|| signatureAlgorithm == 15
|| signatureAlgorithm == 31
) {
component rsa65537 = VerifyRsa65537Pkcs1v1_5(n, k, HASH_LEN_BITS);
for (var i = 0; i < msg_len; i++) {
rsa.message[i] <== hashParsed[i];
rsa65537.message[i] <== hashParsed[i];
}
for (var i = msg_len; i < k; i++) {
rsa.message[i] <== 0;
rsa65537.message[i] <== 0;
}
rsa.modulus <== pubKey;
rsa.signature <== signature;
rsa65537.modulus <== pubKey;
rsa65537.signature <== signature;
}
if (signatureAlgorithm == 3) {
component rsa = VerifyRsa65537Pkcs1v1_5(n, k, 160);
if (
signatureAlgorithm == 13
|| signatureAlgorithm == 32
) {
component rsa3 = VerifyRsa3Pkcs1v1_5(n, k, HASH_LEN_BITS);
for (var i = 0; i < msg_len; i++) {
rsa.message[i] <== hashParsed[i];
rsa3.message[i] <== hashParsed[i];
}
for (var i = msg_len; i < k; i++) {
rsa.message[i] <== 0;
rsa3.message[i] <== 0;
}
rsa.modulus <== pubKey;
rsa.signature <== signature;
rsa3.modulus <== pubKey;
rsa3.signature <== signature;
}
if (
signatureAlgorithm == 4
|| signatureAlgorithm == 12
@@ -92,68 +102,6 @@ template SignatureVerifier(signatureAlgorithm, n, k) {
) {
EcdsaVerifier (signatureAlgorithm, n, k)(signature, pubKey, hash);
}
if (signatureAlgorithm == 10) {
component rsa = VerifyRsa65537Pkcs1v1_5(n, k, 256);
for (var i = 0; i < msg_len; i++) {
rsa.message[i] <== hashParsed[i];
}
for (var i = msg_len; i < k; i++) {
rsa.message[i] <== 0;
}
rsa.modulus <== pubKey;
rsa.signature <== signature;
}
if (signatureAlgorithm == 11) {
component rsa = VerifyRsa65537Pkcs1v1_5(n, k, 160);
for (var i = 0; i < msg_len; i++) {
rsa.message[i] <== hashParsed[i];
}
for (var i = msg_len; i < k; i++) {
rsa.message[i] <== 0;
}
rsa.modulus <== pubKey;
rsa.signature <== signature;
}
if (
signatureAlgorithm == 13
|| signatureAlgorithm == 32
) {
component rsa = VerifyRsa3Pkcs1v1_5(n, k, 256);
for (var i = 0; i < msg_len; i++) {
rsa.message[i] <== hashParsed[i];
}
for (var i = msg_len; i < k; i++) {
rsa.message[i] <== 0;
}
rsa.modulus <== pubKey;
rsa.signature <== signature;
}
if (signatureAlgorithm == 14) {
component rsa = VerifyRsa65537Pkcs1v1_5(n, k, 256);
for (var i = 0; i < msg_len; i++) {
rsa.message[i] <== hashParsed[i];
}
for (var i = msg_len; i < k; i++) {
rsa.message[i] <== 0;
}
rsa.modulus <== pubKey;
rsa.signature <== signature;
}
if (
signatureAlgorithm == 15
|| signatureAlgorithm == 31
) {
component rsa = VerifyRsa65537Pkcs1v1_5(n, k, 512);
for (var i = 0; i < msg_len; i++) {
rsa.message[i] <== hashParsed[i];
}
for (var i = msg_len; i < k; i++) {
rsa.message[i] <== 0;
}
rsa.modulus <== pubKey;
rsa.signature <== signature;
}
}