@@ -5849,6 +5849,10 @@ func (r *rpcServer) ProveAssetOwnership(ctx context.Context,
58495849 return nil , fmt .Errorf ("asset ID must be 32 bytes" )
58505850 }
58515851
5852+ if len (req .Challenge ) != 0 && len (req .Challenge ) != 32 {
5853+ return nil , fmt .Errorf ("challenge must be 32 bytes" )
5854+ }
5855+
58525856 var (
58535857 assetID = fn.ToArray [asset.ID ](req .AssetId )
58545858 outPoint * wire.OutPoint
@@ -5903,8 +5907,16 @@ func (r *rpcServer) ProveAssetOwnership(ctx context.Context,
59035907 return nil , fmt .Errorf ("error fetching commitment: %w" , err )
59045908 }
59055909
5910+ var challengeOpt fn.Option [[32 ]byte ]
5911+
5912+ if len (req .Challenge ) == 32 {
5913+ var bCopy [32 ]byte
5914+ copy (bCopy [:], req .Challenge [:32 ])
5915+ challengeOpt = fn.Some [[32 ]byte ](bCopy )
5916+ }
5917+
59065918 challengeWitness , err := r .cfg .AssetWallet .SignOwnershipProof (
5907- inputCommitment .Asset .Copy (),
5919+ inputCommitment .Asset .Copy (), challengeOpt ,
59085920 )
59095921 if err != nil {
59105922 return nil , fmt .Errorf ("error signing ownership proof: %w" , err )
@@ -5937,6 +5949,10 @@ func (r *rpcServer) VerifyAssetOwnership(ctx context.Context,
59375949 return nil , fmt .Errorf ("a valid proof must be specified" )
59385950 }
59395951
5952+ if len (req .Challenge ) != 0 && len (req .Challenge ) != 32 {
5953+ return nil , fmt .Errorf ("challenge must be 32 bytes" )
5954+ }
5955+
59405956 p , err := proof .Decode (req .ProofWithWitness )
59415957 if err != nil {
59425958 return nil , fmt .Errorf ("cannot decode proof file: %w" , err )
@@ -5950,9 +5966,20 @@ func (r *rpcServer) VerifyAssetOwnership(ctx context.Context,
59505966
59515967 headerVerifier := tapgarden .GenHeaderVerifier (ctx , r .cfg .ChainBridge )
59525968 groupVerifier := tapgarden .GenGroupVerifier (ctx , r .cfg .MintingStore )
5969+
5970+ var (
5971+ challengeBytes [32 ]byte
5972+ opts []proof.ProofVerificationOption
5973+ )
5974+
5975+ if len (req .Challenge ) == 32 {
5976+ copy (challengeBytes [:], req .Challenge [:32 ])
5977+ opts = append (opts , proof .WithChallengeBytes (challengeBytes ))
5978+ }
5979+
59535980 snapShot , err := p .Verify (
59545981 ctx , nil , headerVerifier , proof .DefaultMerkleVerifier ,
5955- groupVerifier , lookup ,
5982+ groupVerifier , lookup , opts ... ,
59565983 )
59575984 if err != nil {
59585985 return nil , fmt .Errorf ("error verifying proof: %w" , err )
0 commit comments