From a90f54047516a9e10326ba164e0e7348ddd03830 Mon Sep 17 00:00:00 2001 From: Dakota Brink Date: Mon, 7 Oct 2024 10:49:54 -0400 Subject: [PATCH 1/6] update signature verification request message --- proto/identity/api/v1/identity.proto | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/proto/identity/api/v1/identity.proto b/proto/identity/api/v1/identity.proto index 2b584e0..0d61068 100644 --- a/proto/identity/api/v1/identity.proto +++ b/proto/identity/api/v1/identity.proto @@ -58,10 +58,18 @@ message VerifySmartContractWalletSignaturesRequest { repeated UnverifiedSmartContractWalletSignature signatures = 1; } +// Derived from xmtp.identity.associations.signature.SmartContractWalletSignature +// Changes are - block number is optional, and hash is provided message UnverifiedSmartContractWalletSignature { - xmtp.identity.associations.SmartContractWalletSignature scw_signature = 1; + // CAIP-10 string + // https://github.com/ChainAgnostic/CAIPs/blob/main/CAIPs/caip-10.md + string account_id = 1; + // Specify the block number to verify the signature against + optional uint64 block_number = 2; + // The signature bytes + bytes signature = 3; // SHA256 hash of the signature payload - bytes hash = 5; + bytes hash = 4; } message VerifySmartContractWalletSignaturesResponse { From 482b925ac9efd83628c07d8e9b782ba683cb387c Mon Sep 17 00:00:00 2001 From: Dakota Brink Date: Mon, 7 Oct 2024 11:15:39 -0400 Subject: [PATCH 2/6] create parent payload for sig request --- proto/identity/api/v1/identity.proto | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/proto/identity/api/v1/identity.proto b/proto/identity/api/v1/identity.proto index 0d61068..546d41c 100644 --- a/proto/identity/api/v1/identity.proto +++ b/proto/identity/api/v1/identity.proto @@ -55,7 +55,13 @@ service IdentityApi { } message VerifySmartContractWalletSignaturesRequest { - repeated UnverifiedSmartContractWalletSignature signatures = 1; + repeated UnverifiedSmartContractWalletSignaturePayload signatures = 1; +} + +message UnverifiedSmartContractWalletSignaturePayload { + UnverifiedSmartContractWalletSignature signature = 1; + // SHA256 hash of the signature payload + bytes hash = 4; } // Derived from xmtp.identity.associations.signature.SmartContractWalletSignature @@ -68,8 +74,6 @@ message UnverifiedSmartContractWalletSignature { optional uint64 block_number = 2; // The signature bytes bytes signature = 3; - // SHA256 hash of the signature payload - bytes hash = 4; } message VerifySmartContractWalletSignaturesResponse { From 80c0db9a7e7543a077747dae8156927eba378514 Mon Sep 17 00:00:00 2001 From: Dakota Brink Date: Mon, 7 Oct 2024 13:28:54 -0400 Subject: [PATCH 3/6] flatten the verification reqeust --- proto/identity/api/v1/identity.proto | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/proto/identity/api/v1/identity.proto b/proto/identity/api/v1/identity.proto index 546d41c..1ca38bb 100644 --- a/proto/identity/api/v1/identity.proto +++ b/proto/identity/api/v1/identity.proto @@ -59,14 +59,6 @@ message VerifySmartContractWalletSignaturesRequest { } message UnverifiedSmartContractWalletSignaturePayload { - UnverifiedSmartContractWalletSignature signature = 1; - // SHA256 hash of the signature payload - bytes hash = 4; -} - -// Derived from xmtp.identity.associations.signature.SmartContractWalletSignature -// Changes are - block number is optional, and hash is provided -message UnverifiedSmartContractWalletSignature { // CAIP-10 string // https://github.com/ChainAgnostic/CAIPs/blob/main/CAIPs/caip-10.md string account_id = 1; @@ -74,6 +66,7 @@ message UnverifiedSmartContractWalletSignature { optional uint64 block_number = 2; // The signature bytes bytes signature = 3; + bytes hash = 4; } message VerifySmartContractWalletSignaturesResponse { From acfe337d7aee2f91fe7d1ee6ca5ede3eeec8df06 Mon Sep 17 00:00:00 2001 From: Dakota Brink Date: Mon, 7 Oct 2024 14:18:01 -0400 Subject: [PATCH 4/6] tweak name --- proto/identity/api/v1/identity.proto | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/proto/identity/api/v1/identity.proto b/proto/identity/api/v1/identity.proto index 1ca38bb..200da9e 100644 --- a/proto/identity/api/v1/identity.proto +++ b/proto/identity/api/v1/identity.proto @@ -55,10 +55,10 @@ service IdentityApi { } message VerifySmartContractWalletSignaturesRequest { - repeated UnverifiedSmartContractWalletSignaturePayload signatures = 1; + repeated VerifySmartContractWalletSignatureRequestSignature signatures = 1; } -message UnverifiedSmartContractWalletSignaturePayload { +message VerifySmartContractWalletSignatureRequestSignature { // CAIP-10 string // https://github.com/ChainAgnostic/CAIPs/blob/main/CAIPs/caip-10.md string account_id = 1; From fc6ef792e8228b9fbc07659706a4dee89336deae Mon Sep 17 00:00:00 2001 From: Dakota Brink Date: Mon, 7 Oct 2024 14:41:05 -0400 Subject: [PATCH 5/6] return block number in validation response --- proto/identity/api/v1/identity.proto | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/proto/identity/api/v1/identity.proto b/proto/identity/api/v1/identity.proto index 200da9e..de4f7f3 100644 --- a/proto/identity/api/v1/identity.proto +++ b/proto/identity/api/v1/identity.proto @@ -72,7 +72,8 @@ message VerifySmartContractWalletSignatureRequestSignature { message VerifySmartContractWalletSignaturesResponse { message ValidationResponse { bool is_valid = 1; - optional string error = 2; + uint64 block_number = 2; + optional string error = 3; } repeated ValidationResponse responses = 1; From 3a82d258510485889999311fb2c3d583a8fbff98 Mon Sep 17 00:00:00 2001 From: Dakota Brink Date: Mon, 7 Oct 2024 15:03:20 -0400 Subject: [PATCH 6/6] this can error out, leaving out a block_number --- proto/identity/api/v1/identity.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proto/identity/api/v1/identity.proto b/proto/identity/api/v1/identity.proto index de4f7f3..09113b5 100644 --- a/proto/identity/api/v1/identity.proto +++ b/proto/identity/api/v1/identity.proto @@ -72,7 +72,7 @@ message VerifySmartContractWalletSignatureRequestSignature { message VerifySmartContractWalletSignaturesResponse { message ValidationResponse { bool is_valid = 1; - uint64 block_number = 2; + optional uint64 block_number = 2; optional string error = 3; }