v0.2.2: updated Lidgren, railgun shells can be bought, autorestart server, netstats, tutorial moloch spawning in a wall fix, misc error checks
This commit is contained in:
+10
-35
@@ -14,17 +14,7 @@ namespace Lidgren.Network
|
||||
private static readonly NetBigInteger N = new NetBigInteger("0115b8b692e0e045692cf280b436735c77a5a9e8a9e7ed56c965f87db5b2a2ece3", 16);
|
||||
private static readonly NetBigInteger g = NetBigInteger.Two;
|
||||
private static readonly NetBigInteger k = ComputeMultiplier();
|
||||
|
||||
private static HashAlgorithm GetHashAlgorithm()
|
||||
{
|
||||
#if USE_SHA256
|
||||
// this does not seem to work as of yet
|
||||
return SHA256.Create();
|
||||
#else
|
||||
return SHA1.Create();
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Compute multiplier (k)
|
||||
/// </summary>
|
||||
@@ -36,9 +26,7 @@ namespace Lidgren.Network
|
||||
string ccstr = one + two.PadLeft(one.Length, '0');
|
||||
byte[] cc = NetUtility.ToByteArray(ccstr);
|
||||
|
||||
var sha = GetHashAlgorithm();
|
||||
var ccHashed = sha.ComputeHash(cc);
|
||||
|
||||
var ccHashed = NetUtility.ComputeSHAHash(cc);
|
||||
return new NetBigInteger(NetUtility.ToHexString(ccHashed), 16);
|
||||
}
|
||||
|
||||
@@ -48,7 +36,7 @@ namespace Lidgren.Network
|
||||
public static byte[] CreateRandomSalt()
|
||||
{
|
||||
byte[] retval = new byte[16];
|
||||
NetRandom.Instance.NextBytes(retval);
|
||||
CryptoRandom.Instance.NextBytes(retval);
|
||||
return retval;
|
||||
}
|
||||
|
||||
@@ -58,7 +46,7 @@ namespace Lidgren.Network
|
||||
public static byte[] CreateRandomEphemeral()
|
||||
{
|
||||
byte[] retval = new byte[32];
|
||||
NetRandom.Instance.NextBytes(retval);
|
||||
CryptoRandom.Instance.NextBytes(retval);
|
||||
return retval;
|
||||
}
|
||||
|
||||
@@ -67,17 +55,15 @@ namespace Lidgren.Network
|
||||
/// </summary>
|
||||
public static byte[] ComputePrivateKey(string username, string password, byte[] salt)
|
||||
{
|
||||
var sha = GetHashAlgorithm();
|
||||
|
||||
byte[] tmp = Encoding.UTF8.GetBytes(username + ":" + password);
|
||||
byte[] innerHash = sha.ComputeHash(tmp);
|
||||
byte[] innerHash = NetUtility.ComputeSHAHash(tmp);
|
||||
|
||||
byte[] total = new byte[innerHash.Length + salt.Length];
|
||||
Buffer.BlockCopy(salt, 0, total, 0, salt.Length);
|
||||
Buffer.BlockCopy(innerHash, 0, total, salt.Length, innerHash.Length);
|
||||
|
||||
// x ie. H(salt || H(username || ":" || password))
|
||||
return new NetBigInteger(NetUtility.ToHexString(sha.ComputeHash(total)), 16).ToByteArrayUnsigned();
|
||||
return new NetBigInteger(NetUtility.ToHexString(NetUtility.ComputeSHAHash(total)), 16).ToByteArrayUnsigned();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -93,15 +79,6 @@ namespace Lidgren.Network
|
||||
return serverVerifier.ToByteArrayUnsigned();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// SHA hash data
|
||||
/// </summary>
|
||||
public static byte[] Hash(byte[] data)
|
||||
{
|
||||
var sha = GetHashAlgorithm();
|
||||
return sha.ComputeHash(data);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Compute client public ephemeral value (A)
|
||||
/// </summary>
|
||||
@@ -144,8 +121,7 @@ namespace Lidgren.Network
|
||||
|
||||
byte[] cc = NetUtility.ToByteArray(ccstr);
|
||||
|
||||
var sha = GetHashAlgorithm();
|
||||
var ccHashed = sha.ComputeHash(cc);
|
||||
var ccHashed = NetUtility.ComputeSHAHash(cc);
|
||||
|
||||
return new NetBigInteger(NetUtility.ToHexString(ccHashed), 16).ToByteArrayUnsigned();
|
||||
}
|
||||
@@ -185,10 +161,9 @@ namespace Lidgren.Network
|
||||
/// <summary>
|
||||
/// Create XTEA symmetrical encryption object from sessionValue
|
||||
/// </summary>
|
||||
public static NetXtea CreateEncryption(byte[] sessionValue)
|
||||
public static NetXtea CreateEncryption(NetPeer peer, byte[] sessionValue)
|
||||
{
|
||||
var sha = GetHashAlgorithm();
|
||||
var hash = sha.ComputeHash(sessionValue);
|
||||
var hash = NetUtility.ComputeSHAHash(sessionValue);
|
||||
|
||||
var key = new byte[16];
|
||||
for(int i=0;i<16;i++)
|
||||
@@ -198,7 +173,7 @@ namespace Lidgren.Network
|
||||
key[i] ^= hash[i + (j * 16)];
|
||||
}
|
||||
|
||||
return new NetXtea(key);
|
||||
return new NetXtea(peer, key);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user