99
1010 "fiatjaf.com/nostr"
1111 "fiatjaf.com/nostr/keyer"
12- "fiatjaf.com/nostr/nip19"
1312 "fiatjaf.com/nostr/nip42"
1413 "fiatjaf.com/nostr/nip46"
1514 "fiatjaf.com/nostr/nip49"
@@ -41,36 +40,26 @@ func gatherKeyerFromArguments(ctx context.Context, c *cli.Command) (nostr.Keyer,
4140 }
4241
4342 var kr nostr.Keyer
44- if bunker != nil {
45- kr = keyer .NewBunkerSignerFromBunkerClient (bunker )
46- } else {
43+ if bunker == nil {
4744 kr = keyer .NewPlainKeySigner (key )
45+ } else {
46+ kr = keyer .NewBunkerSignerFromBunkerClient (bunker )
4847 }
4948
5049 return kr , key , nil
5150}
5251
5352func gatherSecretKeyOrBunkerFromArguments (ctx context.Context , c * cli.Command ) (nostr.SecretKey , * nip46.BunkerClient , error ) {
5453 sec := c .String ("sec" )
54+
5555 if strings .HasPrefix (sec , "bunker://" ) {
5656 // it's a bunker
5757 bunkerURL := sec
58- clientKeyHex := c .String ("connect-as" )
59- var clientKey nostr.SecretKey
60-
61- if clientKeyHex != "" {
62- var err error
63- clientKey , err = nostr .SecretKeyFromHex (clientKeyHex )
64- if err != nil {
65- return nostr.SecretKey {}, nil , fmt .Errorf ("bunker client key '%s' is invalid: %w" , clientKeyHex , err )
66- }
67- } else {
68- clientKey = defaultKey ()
69- }
7058
59+ clientKey := getSecretKey (c , "connect-as" )
7160 logverbose ("[nip46]: connecting to %s with client key %s\n " , bunkerURL , clientKey .Hex ())
7261
73- bunker , err := nip46 .ConnectBunker (ctx , clientKey , bunkerURL , nil , func (s string ) {
62+ bunker , err := nip46 .ConnectBunker (ctx , clientKey , bunkerURL , sys . Pool , func (s string ) {
7463 log (color .CyanString ("[nip46]: open the following URL: %s" ), s )
7564 })
7665 if err != nil {
@@ -96,16 +85,8 @@ func gatherSecretKeyOrBunkerFromArguments(ctx context.Context, c *cli.Command) (
9685 return sk , nil , nil
9786 }
9887
99- if prefix , ski , err := nip19 .Decode (sec ); err == nil && prefix == "nsec" {
100- return ski .(nostr.SecretKey ), nil , nil
101- }
102-
103- sk , err := nostr .SecretKeyFromHex (sec )
104- if err != nil {
105- return nostr.SecretKey {}, nil , fmt .Errorf ("invalid secret key: %w" , err )
106- }
107-
108- return sk , nil , nil
88+ sk , err := parseSecretKey (sec )
89+ return sk , nil , err
10990}
11091
11192func authSigner (ctx context.Context , c * cli.Command , log func (s string , args ... any ), authEvent * nostr.Event ) (err error ) {
@@ -120,14 +101,19 @@ func authSigner(ctx context.Context, c *cli.Command, log func(s string, args ...
120101 return fmt .Errorf ("auth required, but --auth flag not given" )
121102 }
122103
123- kr , _ , err := gatherKeyerFromArguments (ctx , c )
124- if err != nil {
125- return err
104+ var kr nostr.Keyer
105+
106+ if nip46 .IsBunkerClientOperation (ctx ) {
107+ kr = keyer .NewPlainKeySigner (getSecretKey (c , "connect-as" ))
108+ } else {
109+ kr , _ , err = gatherKeyerFromArguments (ctx , c )
110+ if err != nil {
111+ return err
112+ }
126113 }
127114
128115 pk , _ := kr .GetPublicKey (ctx )
129- npub := nip19 .EncodeNpub (pk )
130- log ("authenticating as %s... " , color .YellowString ("%s…%s" , npub [0 :7 ], npub [58 :]))
116+ log ("authenticating as %s... " , color .YellowString ("%s…" , pk .Hex ()[0 :16 ]))
131117
132118 return kr .SignEvent (ctx , authEvent )
133119}
0 commit comments