11package  io .r2dbc .postgresql .authentication ;
22
33import  com .ongres .scram .client .ScramClient ;
4- import  com .ongres .scram .client .ScramSession ;
54import  com .ongres .scram .common .exception .ScramInvalidServerSignatureException ;
65import  com .ongres .scram .common .exception .ScramParseException ;
76import  com .ongres .scram .common .exception .ScramServerErrorException ;
1716import  reactor .core .Exceptions ;
1817import  reactor .util .annotation .Nullable ;
1918
20- import  static  com .ongres .scram .client .ScramClient .ChannelBinding .NO ;
21- import  static  com .ongres .scram .common .stringprep .StringPreparations .NO_PREPARATION ;
19+ import  static  com .ongres .scram .common .StringPreparation .NO_PREPARATION ;
2220
2321public  class  SASLAuthenticationHandler  implements  AuthenticationHandler  {
2422
2523    private  final  CharSequence  password ;
2624
2725    private  final  String  username ;
2826
29-     private  ScramSession .ClientFinalProcessor  clientFinalProcessor ;
30- 
31-     private  ScramSession  scramSession ;
27+     private  ScramClient  scramClient ;
3228
3329    /** 
3430     * Create a new handler. 
@@ -73,24 +69,20 @@ public FrontendMessage handle(AuthenticationMessage message) {
7369    }
7470
7571    private  FrontendMessage  handleAuthenticationSASL (AuthenticationSASL  message ) {
76-         ScramClient  scramClient  = ScramClient 
77-             .channelBinding (NO )
72+         scramClient  = ScramClient .builder ()
73+             .advertisedMechanisms (message .getAuthenticationMechanisms ())
74+             .username (this .username )
75+             .password (this .password .toString ().toCharArray ())
7876            .stringPreparation (NO_PREPARATION )
79-             .selectMechanismBasedOnServerAdvertised (message .getAuthenticationMechanisms ().toArray (new  String [0 ]))
80-             .setup ();
81- 
82-         this .scramSession  = scramClient .scramSession (this .username );
77+             .build ();
8378
84-         return  new  SASLInitialResponse (ByteBufferUtils .encode (this . scramSession . clientFirstMessage ()), scramClient .getScramMechanism ().getName ());
79+         return  new  SASLInitialResponse (ByteBufferUtils .encode (scramClient . clientFirstMessage (). toString ()), scramClient .getScramMechanism ().getName ());
8580    }
8681
8782    private  FrontendMessage  handleAuthenticationSASLContinue (AuthenticationSASLContinue  message ) {
8883        try  {
89-             this .clientFinalProcessor  = this .scramSession 
90-                 .receiveServerFirstMessage (ByteBufferUtils .decode (message .getData ()))
91-                 .clientFinalProcessor (this .password .toString ());
92- 
93-             return  new  SASLResponse (ByteBufferUtils .encode (clientFinalProcessor .clientFinalMessage ()));
84+             scramClient .serverFirstMessage (ByteBufferUtils .decode (message .getData ()));
85+             return  new  SASLResponse (ByteBufferUtils .encode (scramClient .clientFinalMessage ().toString ()));
9486        } catch  (ScramParseException  e ) {
9587            throw  Exceptions .propagate (e );
9688        }
@@ -99,7 +91,7 @@ private FrontendMessage handleAuthenticationSASLContinue(AuthenticationSASLConti
9991    @ Nullable 
10092    private  FrontendMessage  handleAuthenticationSASLFinal (AuthenticationSASLFinal  message ) {
10193        try  {
102-             this . clientFinalProcessor . receiveServerFinalMessage (ByteBufferUtils .decode (message .getAdditionalData ()));
94+             scramClient . serverFinalMessage (ByteBufferUtils .decode (message .getAdditionalData ()));
10395            return  null ;
10496        } catch  (ScramParseException  | ScramInvalidServerSignatureException  | ScramServerErrorException  e ) {
10597            throw  Exceptions .propagate (e );
0 commit comments