Skip to content

Commit 6b474a7

Browse files
committed
extract secret from final signature
1 parent 8121d9b commit 6b474a7

File tree

3 files changed

+20
-11
lines changed

3 files changed

+20
-11
lines changed

x/lending/keeper/msg_server.go

+13-4
Original file line numberDiff line numberDiff line change
@@ -334,12 +334,21 @@ func (m msgServer) Close(goCtx context.Context, msg *types.MsgClose) (*types.Msg
334334
return nil, types.ErrInvalidRepayment
335335
}
336336

337-
repay := m.GetRepayment(ctx, msg.LoanId)
337+
repayment := m.GetRepayment(ctx, msg.LoanId)
338+
if len(repayment.DcaAdaptorSignature) == 0 {
339+
return nil, types.ErrRepaymentAdaptorSigDoesNotExist
340+
}
341+
342+
sigBytes, _ := hex.DecodeString(msg.Signature)
343+
adaptorSigBytes, _ := hex.DecodeString(repayment.DcaAdaptorSignature)
338344

339345
// extract secret from signature
340-
secret := msg.Signature + repay.RepayAdaptorPoint // fix it later.
346+
secret := adaptor.Extract(sigBytes, adaptorSigBytes)
347+
if len(secret) == 0 {
348+
return nil, types.ErrInvalidSignature
349+
}
341350

342-
if types.AdaptorPoint(secret) != repay.RepayAdaptorPoint {
351+
if types.AdaptorPoint(secret) != repayment.RepayAdaptorPoint {
343352
return nil, types.ErrInvalidRepaymentSecret
344353
}
345354

@@ -355,7 +364,7 @@ func (m msgServer) Close(goCtx context.Context, msg *types.MsgClose) (*types.Msg
355364

356365
m.EmitEvent(ctx, msg.Relayer,
357366
sdk.NewAttribute("loan_id", loan.VaultAddress),
358-
sdk.NewAttribute("payment_secret", secret),
367+
sdk.NewAttribute("payment_secret", hex.EncodeToString(secret)),
359368
)
360369

361370
return &types.MsgCloseResponse{}, nil

x/lending/types/errors.go

+5-2
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,9 @@ var (
4343
ErrInvalidRepaymentTx = errorsmod.Register(ModuleName, 6003, "invalid repayment tx")
4444
ErrInvalidRepaymentSecret = errorsmod.Register(ModuleName, 6004, "invalid repayment secret")
4545
ErrRepaymentAdaptorSigAlreadyExists = errorsmod.Register(ModuleName, 6005, "repayment adaptor signature already exists")
46-
ErrInvalidAdaptorSignature = errorsmod.Register(ModuleName, 6006, "invalid adaptor signature")
47-
ErrEmptyLoanId = errorsmod.Register(ModuleName, 6007, "empty loan id")
46+
ErrRepaymentAdaptorSigDoesNotExist = errorsmod.Register(ModuleName, 6006, "repayment adaptor signature does not exist")
47+
ErrInvalidAdaptorSignature = errorsmod.Register(ModuleName, 6007, "invalid adaptor signature")
48+
ErrEmptyLoanId = errorsmod.Register(ModuleName, 6008, "empty loan id")
49+
50+
ErrInvalidSignature = errorsmod.Register(ModuleName, 7001, "invalid signature")
4851
)

x/lending/types/taproot.go

+2-5
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,8 @@ func HashLoanSecret(secret string) string {
2626
}
2727

2828
// AdaptorPoint gets the corresponding adaptor point from the given secret
29-
// Assume that the secret is a valid hex string
30-
func AdaptorPoint(secret string) string {
31-
secretBytes, _ := hex.DecodeString(secret)
32-
33-
return hex.EncodeToString(adaptor.SecretToPubKey(secretBytes))
29+
func AdaptorPoint(secret []byte) string {
30+
return hex.EncodeToString(adaptor.SecretToPubKey(secret))
3431
}
3532

3633
func GetTaprootAddress(script []byte) (*btcutil.AddressTaproot, error) {

0 commit comments

Comments
 (0)