Skip to content

Commit

Permalink
fix: correct set of address (#1278)
Browse files Browse the repository at this point in the history
* fix: correct set of address

* chore: IssF to IssBase64

* chore: add CHANGELOG
  • Loading branch information
shiki-tak committed Mar 13, 2024
1 parent 7c1e68a commit df06ee1
Show file tree
Hide file tree
Showing 14 changed files with 61 additions and 54 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ Ref: https://keepachangelog.com/en/1.0.0/
### Improvements
* (x/zkauth) [\#1239](https://github.com/Finschia/finschia-sdk/pull/1239) add CalculateAllInputsHash in ZKAuthInputs
* (x/zkauth) [\#1275](https://github.com/Finschia/finschia-sdk/pull/1275) Ignore gas when zkauth
* (x/zkauth) [\#1278](https://github.com/Finschia/finschia-sdk/pull/1278) Correct set of address

### Bug Fixes

Expand Down
2 changes: 1 addition & 1 deletion docs/core/proto-docs.md
Original file line number Diff line number Diff line change
Expand Up @@ -9136,7 +9136,7 @@ Contains the values needed to calculate "all inputs hash".
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| `proof_points` | [bytes](#bytes) | | |
| `iss_f` | [string](#string) | | |
| `iss_base64` | [string](#string) | | |
| `header_base64` | [string](#string) | | |
| `address_seed` | [string](#string) | | |

Expand Down
2 changes: 1 addition & 1 deletion proto/finschia/zkauth/v1beta1/zkauth.proto
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ message ZKAuthAccount {
// Contains the values needed to calculate "all inputs hash".
message ZKAuthInputs {
bytes proof_points = 1;
string iss_f = 2;
string iss_base64 = 2;
string header_base64 = 3;
string address_seed = 4;
}
2 changes: 1 addition & 1 deletion simapp/ante/ante_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import (

func TestAnteHandler(t *testing.T) {
k := testutil.ZkAuthKeeper(t)
_, err := k.AddTestAccounts([]string{"link19qvkxwmln5kf0z59ecw744ue2gzsndlwcuz9uq2kav4evuerjlysxduwzj"})
_, err := k.AddTestAccounts([]string{"link1g7ud63eqllj7zj4q7fkca5h7s223j78tyvr0e2cxuw4qyyaaf3usa64dqc"})
require.NoError(t, err)

const sampleTxBase64 = "CtcICtQICiUvZmluc2NoaWEuemthdXRoLnYxYmV0YTEuTXNnRXhlY3V0aW9uEqoICo4BChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEm4KP2xpbmsxZzd1ZDYzZXFsbGo3emo0cTdma2NhNWg3czIyM2o3OHR5dnIwZTJjeHV3NHF5eWFhZjN1c2E2NGRxYxIrbGluazEwMDh3ZW5ncjI4ejVxdWF0MmR6cnBydDloOGV1YXY0aGVyZnl1bRKWBwqPBwqvBXsicGlfYSI6WyIzNjE1OTE2NzQ3NTQxMzkyMzMzOTA1MjYyNjkyNjQ3NTE1MjE2MDc2MTQzMTkwNzQwNDUyOTEyNjMzMzExMDAyMDc4NjYzNjEwNTU5IiwiMjAxMzg5MzA5NDk5MjEyMTA2Njk0NDYyMDA4ODAwNzI2MDg2MjUwOTM0MzQ5OTc3NDc2NDkyMTU2MDA5NDU0MTg4ODA1ODM2NzE5MDciLCIxIl0sInBpX2IiOltbIjE2MjY0ODM5OTg1NTE5MTY1MzM1MTQzMjk5MTczMzI0NjU1NDgwNjI1MjE2NDUyNDkzNzQzOTE0NDI3MTA0MDUzMDU0OTA2NzYwMTk1IiwiMjAyNTY3NzY4MTY5MjEzMjUzOTkwMjI4NjYyMTkyNzAzNTc5Mzc4Mzc4ODk2NjA2MDQ0OTU5ODk3Njg3MjczMjUzNzY1ODIyMzM0NTgiXSxbIjY2MzU2NzY4NzMxOTU4OTkyMDUxMDM3MjYwNDE4ODIyNTkxNjc3MDgwNDQwNzc4MzQ2MzM5NzA5ODIxMzc4NDIxNjkyNjg0OTU1OTYiLCI0ODc4ODc2OTQ4MTE1NTQwMDQ4NTE5MzE2MjI2NzE0OTQ3NDMxMDQ5ODc1Njg1MTcxNTg1Mzk3OTE4NDMzNjEwNzI5NTExMjcyNzM1Il0sWyIxIiwiMCJdXSwicGlfYyI6WyIxMTAzOTE3OTgzNjgwNTQyNTU5NzQzNDYzOTYxMzM0MzExOTI3MzAyNjk4NTc3ODQyMDIxMzEwNDEzMzMzNTU5NTEzOTI2Mzg2MjAzNyIsIjEwMjM4MzE5NjY1MjY0MDc0ODQwNTY3MTc5Njg1MjYzOTA1NDY5NTE4NDgzMTk4ODkzMzUwNDMxMDMwNjE3NTMwODY3NjA1NDczNjEzIiwiMSJdfRIkYUhSMGNITTZMeTloWTJOdmRXNTBjeTVuYjI5bmJHVXVZMjl0GmZleUpoYkdjaU9pSlNVekkxTmlJc0ltdHBaQ0k2SWpabU9UYzNOMkUyT0RVNU1EYzNPVGhsWmpjNU5EQTJNbU13TUdJMk5XUTJObU15TkRCaU1XSWlMQ0owZVhBaU9pSktWMVFpZlEiTTE1MDM1MTYxNTYwMTU5OTcxNjMzODAwOTgzNjE5OTMxNDk4Njk2MTUyNjMzNDI2NzY4MDE2OTY2MDU3NzcwNjQzMjYyMDIyMDk2MDczEISIBxJkCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiEC620v5dX6qHW1pxNtJNnq/I/T5a7hOOaJx/I9MtIFFcwSBAoCCAESEgoMCgRjb255EgQyMDAwEMCaDBpA6pSglqOdkufji1fUl1NBOBCimsduiA4GD/bd3OXFlBoi35CE2qNfdclGgF8ZO7WchVsnx1PuYnJalNq/RJw8RA=="
Expand Down
1 change: 1 addition & 0 deletions x/auth/ante/expected_keepers.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ type AccountKeeper interface {
SetAccount(ctx sdk.Context, acc types.AccountI)
GetModuleAddress(moduleName string) sdk.AccAddress
NewAccountWithAddress(ctx sdk.Context, addr sdk.AccAddress) types.AccountI
HasAccount(ctx sdk.Context, addr sdk.AccAddress) bool
}

// FeegrantKeeper defines the expected feegrant keeper.
Expand Down
5 changes: 4 additions & 1 deletion x/zkauth/ante/zkauth.go
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,10 @@ func (zsp ZKAuthSetPubKeyDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simul

for _, zkMsg := range zkMsgs {
for _, signer := range zkMsg.GetSigners() {
zsp.ak.SetAccount(ctx, zsp.ak.NewAccountWithAddress(ctx, signer))
accExists := zsp.ak.HasAccount(ctx, signer)
if !accExists {
zsp.ak.SetAccount(ctx, zsp.ak.NewAccountWithAddress(ctx, signer))
}
}
}

Expand Down
2 changes: 1 addition & 1 deletion x/zkauth/ante/zkauth_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ func TestNewDecorators(t *testing.T) {
ZkAuthSignature: types.ZKAuthSignature{
ZkAuthInputs: &types.ZKAuthInputs{
ProofPoints: []byte(proofStr),
IssF: "aHR0cHM6Ly9hY2NvdW50cy5nb29nbGUuY29t",
IssBase64: "aHR0cHM6Ly9hY2NvdW50cy5nb29nbGUuY29t",
HeaderBase64: "eyJhbGciOiJSUzI1NiIsImtpZCI6IjU1YzE4OGE4MzU0NmZjMTg4ZTUxNTc2YmE3MjgzNmUwNjAwZThiNzMiLCJ0eXAiOiJKV1QifQ",
AddressSeed: "15035161560159971633800983619931498696152633426768016966057770643262022096073",
},
Expand Down
10 changes: 5 additions & 5 deletions x/zkauth/types/address.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package types

import (
"encoding/base64"
"encoding/binary"
"errors"
"math/big"
Expand All @@ -12,7 +13,7 @@ import (

// AccAddressFromAddressSeed create an AccAddress from addressSeed string and iss string
// AccAddress = blake2b_256(iss_L, iss, addressSeed)
func AccAddressFromAddressSeed(addrSeed, iss string) (types.AccAddress, error) {
func AccAddressFromAddressSeed(addrSeed, issBase64 string) (types.AccAddress, error) {
if len(strings.TrimSpace(addrSeed)) == 0 {
return types.AccAddress{}, errors.New("empty address seed string is not allowed")
}
Expand All @@ -23,11 +24,10 @@ func AccAddressFromAddressSeed(addrSeed, iss string) (types.AccAddress, error) {
return types.AccAddress{}, errors.New("invalid address seed")
}
addrSeedBytes := addrSeedBigInt.Bytes()

if iss == "accounts.google.com" {
iss = "https://accounts.google.com"
issBytes, err := base64.StdEncoding.DecodeString(issBase64)
if err != nil {
return types.AccAddress{}, err
}
issBytes := []byte(iss)

// convert the issBytes length to big endian 2 bytes
issL := make([]byte, 2)
Expand Down
8 changes: 5 additions & 3 deletions x/zkauth/types/address_test.go
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
package types

import (
"github.com/stretchr/testify/require"
"testing"

"github.com/stretchr/testify/require"
)

func TestAccAddressFromAddressSeed(t *testing.T) {
Expand All @@ -12,11 +13,12 @@ func TestAccAddressFromAddressSeed(t *testing.T) {
"11967859756179757815812269077480243698674971831305032302706373939074904776780": "link1muet5uz59utufwvux67tn5lgez28dasg4renvzhuku4a0jz459cs7m6tuw",
"10248927216838193947032332743622432828052626024625324374470479888091711985426": "link14x0mfl95kxg739fqpqdyvrykhd9ghsqk4uew3tr4aqcprfmtpaesh858kj",
"16423356555234621455999265971523270820664611063213539441365583262907894845196": "link1a4m70fx99udpr6c2excsgxa9x0vmra9gvzs4w6cz78dx3djrhuaqlppfp2",
"15035161560159971633800983619931498696152633426768016966057770643262022096073": "link1g7ud63eqllj7zj4q7fkca5h7s223j78tyvr0e2cxuw4qyyaaf3usa64dqc",
}

iss := "accounts.google.com"
issBase64 := "aHR0cHM6Ly9hY2NvdW50cy5nb29nbGUuY29t"
for seed, exp := range addressSeeds {
acc, err := AccAddressFromAddressSeed(seed, iss)
acc, err := AccAddressFromAddressSeed(seed, issBase64)
require.NoError(t, err)
require.Equal(t, exp, acc.String())
}
Expand Down
2 changes: 1 addition & 1 deletion x/zkauth/types/msgs_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ func TestMsgExecutionValidateBasic(t *testing.T) {
const proofStr = "{\n \"pi_a\": [\n \"7575287679446209007446416020137456670042570578978230730578011103770415897062\",\n \"20469978368515629364541212704109752583692706286549284712208570249653184893207\",\n \"1\"\n ],\n \"pi_b\": [\n [\n \"4001119070037193619600086014535210556571209449080681376392853276923728808564\",\n \"18475391841797083641468254159150812922259839776046448499150732610021959794558\"\n ],\n [\n \"19781252109528278034156073207688818205850783935629584279449144780221040670063\",\n \"5873714313814830719712095806732872482213125567325442209795797618441438990229\"\n ],\n [\n \"1\",\n \"0\"\n ]\n ],\n \"pi_c\": [\n \"18920522434978516095250248740518039198650690968720755259416280639852277665022\",\n \"1945774583580804632084048753815901730674007769630810705050114062476636502591\",\n \"1\"\n ],\n \"protocol\": \"groth16\",\n \"curve\": \"bn128\"\n}"
validZKAuthInputs := &ZKAuthInputs{
ProofPoints: []byte(proofStr),
IssF: "aHR0cHM6Ly9hY2NvdW50cy5nb29nbGUuY29t",
IssBase64: "aHR0cHM6Ly9hY2NvdW50cy5nb29nbGUuY29t",
HeaderBase64: "eyJhbGciOiJSUzI1NiIsImtpZCI6IjU1YzE4OGE4MzU0NmZjMTg4ZTUxNTc2YmE3MjgzNmUwNjAwZThiNzMiLCJ0eXAiOiJKV1QifQ",
AddressSeed: "15035161560159971633800983619931498696152633426768016966057770643262022096073",
}
Expand Down
70 changes: 35 additions & 35 deletions x/zkauth/types/zkauth.pb.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions x/zkauth/types/zkauth_inputs.go
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,7 @@ func (zk *ZKAuthInputs) CalculateAllInputsHash(ephPkBytes, modulus []byte, maxBl
ephPkFs := SplitToTwoFields(ephPkBytes)
maxBlockHeightF := new(big.Int).SetInt64(maxBlockHeight)

issBytes, err := base64.StdEncoding.DecodeString(zk.IssF)
issBytes, err := base64.StdEncoding.DecodeString(zk.IssBase64)
if err != nil {
return nil, err
}
Expand Down Expand Up @@ -217,7 +217,7 @@ func (zk *ZKAuthInputs) Validate() error {
}

// check iss
issBytes, err := base64.StdEncoding.DecodeString(zk.IssF)
issBytes, err := base64.StdEncoding.DecodeString(zk.IssBase64)
if err != nil {
return sdkerrors.Wrapf(ErrInvalidZkAuthInputs, "invalid iss, %s", err)
}
Expand All @@ -239,5 +239,5 @@ func (zk *ZKAuthInputs) Validate() error {
}

func (zk *ZKAuthInputs) AccAddress() (types.AccAddress, error) {
return AccAddressFromAddressSeed(zk.AddressSeed, zk.IssF)
return AccAddressFromAddressSeed(zk.AddressSeed, zk.IssBase64)
}
2 changes: 1 addition & 1 deletion x/zkauth/types/zkauth_inputs_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ func TestCalculateAllInputsHash(t *testing.T) {

zkAuthInputs := ZKAuthInputs{
ProofPoints: nil,
IssF: base64.StdEncoding.EncodeToString([]byte(iss)),
IssBase64: base64.StdEncoding.EncodeToString([]byte(iss)),
HeaderBase64: jwtHeader,
AddressSeed: addressSeed,
}
Expand Down
2 changes: 1 addition & 1 deletion x/zkauth/types/zkauth_verify_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ func TestVerifyZKAuthSignature(t *testing.T) {
ZkAuthSignature: ZKAuthSignature{
ZkAuthInputs: &ZKAuthInputs{
ProofPoints: []byte(proofStr),
IssF: "aHR0cHM6Ly9hY2NvdW50cy5nb29nbGUuY29t",
IssBase64: "aHR0cHM6Ly9hY2NvdW50cy5nb29nbGUuY29t",
HeaderBase64: "eyJhbGciOiJSUzI1NiIsImtpZCI6IjU1YzE4OGE4MzU0NmZjMTg4ZTUxNTc2YmE3MjgzNmUwNjAwZThiNzMiLCJ0eXAiOiJKV1QifQ",
AddressSeed: "15035161560159971633800983619931498696152633426768016966057770643262022096073",
},
Expand Down

0 comments on commit df06ee1

Please sign in to comment.