@@ -494,15 +494,21 @@ func (p *Peer) handleInitialRequest(ctx context.Context, message *AuthMessage, s
494494 Certificates : certs ,
495495 }
496496
497- data := message . InitialNonce + session . SessionNonce
498- sigData , err := base64 .StdEncoding .DecodeString (data )
497+ // Decode the nonces first before concatenating
498+ initialNonceBytes , err := base64 .StdEncoding .DecodeString (message . InitialNonce )
499499 if err != nil {
500- return NewAuthError ("failed to prepare data to sign " , err )
500+ return NewAuthError ("failed to decode initial nonce " , err )
501501 }
502+ sessionNonceBytes , err := base64 .StdEncoding .DecodeString (session .SessionNonce )
503+ if err != nil {
504+ return NewAuthError ("failed to decode session nonce" , err )
505+ }
506+ // Concatenate the decoded bytes
507+ sigData := append (initialNonceBytes , sessionNonceBytes ... )
502508
503509 keyID := fmt .Sprintf ("%s %s" , message .InitialNonce , session .SessionNonce )
504510
505- arg := wallet.CreateSignatureArgs {
511+ args := wallet.CreateSignatureArgs {
506512 EncryptionArgs : wallet.EncryptionArgs {
507513 ProtocolID : wallet.Protocol {
508514 // SecurityLevel set to 2 (SecurityLevelEveryAppAndCounterparty) as specified in BRC-31 (Authrite)
@@ -515,13 +521,12 @@ func (p *Peer) handleInitialRequest(ctx context.Context, message *AuthMessage, s
515521 Counterparty : message .IdentityKey ,
516522 },
517523 },
518- // Sign the certificate request data, as in TypeScript
519524 Data : sigData ,
520525 }
521526
522- sigResult , err := p .wallet .CreateSignature (ctx , arg , "" )
527+ sigResult , err := p .wallet .CreateSignature (ctx , args , "" )
523528 if err != nil {
524- return fmt . Errorf ("failed to sign initial response: %w " , err )
529+ return NewAuthError ("failed to sign initial response" , err )
525530 }
526531
527532 response .Signature = sigResult .Signature .Serialize ()
@@ -545,16 +550,21 @@ func (p *Peer) handleInitialResponse(ctx context.Context, message *AuthMessage,
545550 return ErrSessionNotFound
546551 }
547552
548- data := message .InitialNonce + session .SessionNonce
549-
550- sigData , err := base64 .StdEncoding .DecodeString (data )
553+ // Decode the nonces first before concatenating
554+ initialNonceBytes , err := base64 .StdEncoding .DecodeString (message .InitialNonce )
555+ if err != nil {
556+ return NewAuthError ("failed to decode initial nonce" , err )
557+ }
558+ sessionNonceBytes , err := base64 .StdEncoding .DecodeString (session .SessionNonce )
551559 if err != nil {
552- return NewAuthError ("failed to prepare data to sign " , err )
560+ return NewAuthError ("failed to decode session nonce " , err )
553561 }
562+ // Concatenate the decoded bytes
563+ sigData := append (initialNonceBytes , sessionNonceBytes ... )
554564
555565 signature , err := ec .ParseSignature (message .Signature )
556566 if err != nil {
557- return fmt . Errorf ("failed to parse signature: %w " , err )
567+ return NewAuthError ("failed to parse signature" , err )
558568 }
559569
560570 verifyResult , err := p .wallet .VerifySignature (ctx , wallet.VerifySignatureArgs {
@@ -612,13 +622,13 @@ func (p *Peer) handleInitialResponse(ctx context.Context, message *AuthMessage,
612622 utilsRequestedCerts ,
613623 )
614624 if err != nil {
615- return fmt . Errorf ("invalid certificates: %w " , err )
625+ return NewAuthError ("invalid certificates" , err )
616626 }
617627
618628 for _ , callback := range p .onCertificateReceivedCallbacks {
619629 err := callback (senderPublicKey , message .Certificates )
620630 if err != nil {
621- return fmt . Errorf ("certificate received callback error: %w " , err )
631+ return NewAuthError ("certificate received callback error" , err )
622632 }
623633 }
624634 }
@@ -638,7 +648,7 @@ func (p *Peer) handleInitialResponse(ctx context.Context, message *AuthMessage,
638648 if len (message .RequestedCertificates .Certifiers ) > 0 || len (message .RequestedCertificates .CertificateTypes ) > 0 {
639649 err = p .sendCertificates (ctx , message )
640650 if err != nil {
641- return fmt . Errorf ("failed to send requested certificates: %w " , err )
651+ return NewAuthError ("failed to send requested certificates" , err )
642652 }
643653 }
644654
@@ -712,7 +722,7 @@ func (p *Peer) handleCertificateRequest(ctx context.Context, message *AuthMessag
712722 // Try to parse the signature
713723 signature , err := ec .ParseSignature (message .Signature )
714724 if err != nil {
715- return fmt . Errorf ("failed to parse signature: %w " , err )
725+ return NewAuthError ("failed to parse signature" , err )
716726 }
717727
718728 // Verify signature
@@ -740,7 +750,7 @@ func (p *Peer) handleCertificateRequest(ctx context.Context, message *AuthMessag
740750 if len (message .RequestedCertificates .Certifiers ) > 0 || len (message .RequestedCertificates .CertificateTypes ) > 0 {
741751 err = p .sendCertificates (ctx , message )
742752 if err != nil {
743- return fmt . Errorf ("failed to send requested certificates: %w " , err )
753+ return NewAuthError ("failed to send requested certificates" , err )
744754 }
745755 }
746756
@@ -776,7 +786,7 @@ func (p *Peer) handleCertificateResponse(ctx context.Context, message *AuthMessa
776786 // Try to parse the signature
777787 signature , err := ec .ParseSignature (message .Signature )
778788 if err != nil {
779- return fmt . Errorf ("failed to parse signature: %w " , err )
789+ return NewAuthError ("failed to parse signature" , err )
780790 }
781791
782792 // Verify signature
@@ -865,7 +875,7 @@ func (p *Peer) handleGeneralMessage(ctx context.Context, message *AuthMessage, s
865875 // Try to parse the signature
866876 signature , err := ec .ParseSignature (message .Signature )
867877 if err != nil {
868- return fmt . Errorf ("failed to parse signature: %w " , err )
878+ return NewAuthError ("failed to parse signature" , err )
869879 }
870880
871881 // Verify signature
0 commit comments