@@ -68,8 +68,10 @@ extern mod extra;
68
68
extern mod openssl = "github.com/sfackler/rust-openssl" ;
69
69
70
70
use extra:: container:: Deque ;
71
+ use extra:: hex:: ToHex ;
71
72
use extra:: ringbuf:: RingBuf ;
72
73
use extra:: url:: { UserInfo , Url } ;
74
+ use openssl:: crypto:: hash:: { MD5 , Hasher } ;
73
75
use openssl:: ssl:: { SslStream , SslContext } ;
74
76
use std:: cell:: RefCell ;
75
77
use std:: io:: io_error;
@@ -130,14 +132,11 @@ use self::message::{FrontendMessage,
130
132
Terminate } ;
131
133
use self :: message:: { RowDescriptionEntry , WriteMessage , ReadMessage } ;
132
134
use self :: types:: { Oid , PostgresType , ToSql , FromSql , PgUnknownType } ;
133
- use self :: util:: digest:: Digest ;
134
- use self :: util:: md5:: Md5 ;
135
135
136
136
pub mod error;
137
137
pub mod pool;
138
138
mod message;
139
139
pub mod types;
140
- mod util;
141
140
142
141
static DEFAULT_PORT : Port = 5432 ;
143
142
@@ -454,13 +453,13 @@ impl InnerPostgresConnection {
454
453
None => return Some ( MissingPassword )
455
454
} ;
456
455
let input = pass + user;
457
- let mut md5 = Md5 :: new ( ) ;
458
- md5 . input_str ( input) ;
459
- let output = md5 . result_str ( ) ;
460
- md5 . reset ( ) ;
461
- md5 . input_str ( output) ;
462
- md5 . input ( salt) ;
463
- let output = "md5" + md5 . result_str ( ) ;
456
+ let hasher = Hasher :: new ( MD5 ) ;
457
+ hasher . update ( input. as_bytes ( ) ) ;
458
+ let output = hasher . final ( ) . to_hex ( ) ;
459
+ let hasher = Hasher :: new ( MD5 ) ;
460
+ hasher . update ( output. as_bytes ( ) ) ;
461
+ hasher . update ( salt) ;
462
+ let output = "md5" + hasher . final ( ) . to_hex ( ) ;
464
463
self . write_messages ( [ PasswordMessage {
465
464
password : output. as_slice ( )
466
465
} ] ) ;
0 commit comments