|
@@ -89,26 +89,25 @@ func scramblePassword(scramble, password []byte) []byte {
|
|
|
// stage1Hash = SHA1(password)
|
|
// stage1Hash = SHA1(password)
|
|
|
crypt := sha1.New()
|
|
crypt := sha1.New()
|
|
|
crypt.Write(password)
|
|
crypt.Write(password)
|
|
|
- stage1Hash := crypt.Sum(nil)
|
|
|
|
|
|
|
+ stage1 := crypt.Sum(nil)
|
|
|
|
|
|
|
|
// scrambleHash = SHA1(scramble + SHA1(stage1Hash))
|
|
// scrambleHash = SHA1(scramble + SHA1(stage1Hash))
|
|
|
// inner Hash
|
|
// inner Hash
|
|
|
crypt.Reset()
|
|
crypt.Reset()
|
|
|
- crypt.Write(stage1Hash)
|
|
|
|
|
- scrambleHash := crypt.Sum(nil)
|
|
|
|
|
|
|
+ crypt.Write(stage1)
|
|
|
|
|
+ hash := crypt.Sum(nil)
|
|
|
|
|
|
|
|
// outer Hash
|
|
// outer Hash
|
|
|
crypt.Reset()
|
|
crypt.Reset()
|
|
|
crypt.Write(scramble)
|
|
crypt.Write(scramble)
|
|
|
- crypt.Write(scrambleHash)
|
|
|
|
|
- scrambleHash = crypt.Sum(nil)
|
|
|
|
|
|
|
+ crypt.Write(hash)
|
|
|
|
|
+ scramble = crypt.Sum(nil)
|
|
|
|
|
|
|
|
// token = scrambleHash XOR stage1Hash
|
|
// token = scrambleHash XOR stage1Hash
|
|
|
- result := make([]byte, 20)
|
|
|
|
|
- for i := range result {
|
|
|
|
|
- result[i] = scrambleHash[i] ^ stage1Hash[i]
|
|
|
|
|
|
|
+ for i := range scramble {
|
|
|
|
|
+ scramble[i] ^= stage1[i]
|
|
|
}
|
|
}
|
|
|
- return result
|
|
|
|
|
|
|
+ return scramble
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/******************************************************************************
|
|
/******************************************************************************
|