@@ -31,14 +31,6 @@ proc initUserData*[T](typ: typedesc[T], password: string, iterations = 4096): Us
31
31
storedKey = HASH [T]($% clientKey)
32
32
serverKey = HMAC [T]($% saltedPassword, SERVER_KEY )
33
33
34
- # echo &"server password {password}"
35
- # echo &"server salt {salt}"
36
- # echo &"server iterations {iterations}"
37
- # echo &"server saltedPassword {base64.encode(saltedPassword)}"
38
- # echo &"server clientKey {base64.encode(clientKey)}"
39
- # echo &"server serverKey {base64.encode(serverKey)}"
40
- # echo &"server storedKey {base64.encode(storedKey)}"
41
-
42
34
result .salt = base64.encode (salt)
43
35
result .iterations = iterations
44
36
result .storedKey = base64.encode ($% storedKey)
@@ -59,19 +51,10 @@ proc newScramServer*[T](): ScramServer[T] {.deprecated: "use `new ScramServer[T]
59
51
proc handleClientFirstMessage * [T](s: ScramServer [T],clientFirstMessage: string ): string =
60
52
let parts = clientFirstMessage.split (',' , 2 )
61
53
var matches: array [3 , string ]
62
- # echo &"client first message {clientFirstMessage}"
63
54
if not match (clientFirstMessage, CLIENT_FIRST_MESSAGE , matches) or not parts.len == 3 :
64
55
s.state = ENDED
65
56
return
66
- # echo &"client first message matches {matches}"
67
57
s.clientFirstMessageBare = parts[2 ]
68
- # Disabled code until this is resolved
69
- # <https://github.com/nim-lang/Nim/issues/19104>
70
- # s.serverNonce = matches[2] & makeNonce()
71
- # echo &"s.serverNonce = {s.serverNonce}"
72
- # echo &"username = {matches[1]}"
73
- # s.state = FIRST_CLIENT_MESSAGE_HANDLED
74
- # matches[1] # username
75
58
76
59
s.state = FIRST_CLIENT_MESSAGE_HANDLED
77
60
for kv in s.clientFirstMessageBare.split (',' ):
@@ -84,20 +67,13 @@ proc prepareFirstMessage*(s: ScramServer, userData: UserData): string =
84
67
s.state = FIRST_PREPARED
85
68
s.userData = userData
86
69
s.serverFirstMessage = " r=$#,s=$#,i=$#" % [s.serverNonce, userData.salt, $ userData.iterations]
87
- # echo &"server first message: {s.serverFirstMessage}"
88
70
s.serverFirstMessage
89
71
90
72
proc prepareFinalMessage * [T](s: ScramServer [T], clientFinalMessage: string ): string =
91
73
var matches: array [4 , string ]
92
- # echo &"client final message {clientFinalMessage}"
93
74
if not match (clientFinalMessage, CLIENT_FINAL_MESSAGE , matches):
94
75
s.state = ENDED
95
76
return
96
- # echo &"client final message matches {matches}"
97
- # let
98
- # clientFinalMessageWithoutProof = matches[0]
99
- # nonce = matches[2]
100
- # proof = matches[3]
101
77
var clientFinalMessageWithoutProof, nonce, proof: string
102
78
for kv in clientFinalMessage.split (',' ):
103
79
if kv[0 .. 1 ] == " p=" :
@@ -111,7 +87,6 @@ proc prepareFinalMessage*[T](s: ScramServer[T], clientFinalMessage: string): str
111
87
112
88
if nonce != s.serverNonce:
113
89
s.state = ENDED
114
- # echo &"nonce mismatch {nonce} != {s.serverNonce}"
115
90
return
116
91
117
92
let
@@ -121,24 +96,12 @@ proc prepareFinalMessage*[T](s: ScramServer[T], clientFinalMessage: string): str
121
96
serverSignature = HMAC [T](decode (s.userData.serverKey), authMessage)
122
97
decodedProof = base64.decode (proof)
123
98
clientKey = custom_xor (clientSignature, decodedProof)
124
- # var clientKey = $clientSignature
125
- # clientKey ^= decodedProof
126
99
let resultKey = HASH [T](clientKey).raw_str
127
- # echo &"server storedKey {base64.encode(storedKey)}"
128
- # echo &"server resultKey {base64.encode(resultKey)}"
129
- # echo &"server authMessage.1 {s.clientFirstMessageBare}"
130
- # echo &"server authMessage.2 {s.serverFirstMessage}"
131
- # echo &"server authMessage.3 {clientFinalMessageWithoutProof}"
132
- # echo &"server authMessage {authMessage}"
133
- # echo &"server clientSignature {base64.encode(clientSignature)}"
134
- # echo &"server clientKey {base64.encode(clientKey)} .len = {clientKey.len} {$typeof(clientSignature)}"
135
- # echo &"server decodedProof {base64.encode(decodedProof)} .len = {decodedProof.len}"
136
100
137
101
# SECURITY: constant time HMAC check
138
102
if not constantTimeEqual (resultKey, storedKey):
139
103
let k1 = base64.encode (resultKey)
140
104
let k2 = base64.encode (storedKey)
141
- # echo &"key mismatch {k1} != {k2}"
142
105
return
143
106
144
107
s.isSuccessful = true
@@ -147,7 +110,6 @@ proc prepareFinalMessage*[T](s: ScramServer[T], clientFinalMessage: string): str
147
110
result = " v=" & base64.encode (serverSignature)
148
111
else :
149
112
result = " v=" & base64.encode (serverSignature, newLine= " " )
150
- # echo &"server final message: {result}"
151
113
152
114
153
115
proc isSuccessful * (s: ScramServer ): bool =
0 commit comments