nip46: dynamic bunker can't rely on a secret to be persistent or "connect" to be always sent, that's a job for the implementor.
This commit is contained in:
+12
-4
@@ -112,15 +112,23 @@ func (p *DynamicSigner) HandleRequest(ctx context.Context, event nostr.Event) (
|
|||||||
return req, resp, eventResponse, fmt.Errorf("error parsing request: %w", err)
|
return req, resp, eventResponse, fmt.Errorf("error parsing request: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
var secret string
|
|
||||||
var result string
|
var result string
|
||||||
var resultErr error
|
var resultErr error
|
||||||
|
|
||||||
switch req.Method {
|
switch req.Method {
|
||||||
case "connect":
|
case "connect":
|
||||||
|
var secret string
|
||||||
if len(req.Params) >= 2 {
|
if len(req.Params) >= 2 {
|
||||||
secret = req.Params[1]
|
secret = req.Params[1]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if p.OnConnect != nil {
|
||||||
|
if err := p.OnConnect(ctx, event.PubKey, secret); err != nil {
|
||||||
|
resultErr = err
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
result = "ack"
|
result = "ack"
|
||||||
case "get_public_key":
|
case "get_public_key":
|
||||||
result = hex.EncodeToString(session.PublicKey[:])
|
result = hex.EncodeToString(session.PublicKey[:])
|
||||||
@@ -135,7 +143,7 @@ func (p *DynamicSigner) HandleRequest(ctx context.Context, event nostr.Event) (
|
|||||||
resultErr = fmt.Errorf("failed to decode event/2: %w", err)
|
resultErr = fmt.Errorf("failed to decode event/2: %w", err)
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
if p.AuthorizeSigning != nil && !p.AuthorizeSigning(evt, event.PubKey, secret) {
|
if p.AuthorizeSigning != nil && !p.AuthorizeSigning(ctx, evt, event.PubKey) {
|
||||||
resultErr = fmt.Errorf("refusing to sign this event")
|
resultErr = fmt.Errorf("refusing to sign this event")
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
@@ -158,7 +166,7 @@ func (p *DynamicSigner) HandleRequest(ctx context.Context, event nostr.Event) (
|
|||||||
resultErr = fmt.Errorf("first argument to 'nip44_encrypt' is not a valid pubkey string")
|
resultErr = fmt.Errorf("first argument to 'nip44_encrypt' is not a valid pubkey string")
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
if p.AuthorizeEncryption != nil && !p.AuthorizeEncryption(event.PubKey, secret) {
|
if p.AuthorizeEncryption != nil && !p.AuthorizeEncryption(ctx, event.PubKey) {
|
||||||
resultErr = fmt.Errorf("refusing to encrypt")
|
resultErr = fmt.Errorf("refusing to encrypt")
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
@@ -180,7 +188,7 @@ func (p *DynamicSigner) HandleRequest(ctx context.Context, event nostr.Event) (
|
|||||||
resultErr = fmt.Errorf("first argument to 'nip04_decrypt' is not a valid pubkey string")
|
resultErr = fmt.Errorf("first argument to 'nip04_decrypt' is not a valid pubkey string")
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
if p.AuthorizeEncryption != nil && !p.AuthorizeEncryption(event.PubKey, secret) {
|
if p.AuthorizeEncryption != nil && !p.AuthorizeEncryption(ctx, event.PubKey) {
|
||||||
resultErr = fmt.Errorf("refusing to decrypt")
|
resultErr = fmt.Errorf("refusing to decrypt")
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user