You've already forked lidgren-network-gen3
mirror of
https://github.com/lidgren/lidgren-network-gen3.git
synced 2026-05-15 22:56:30 +09:00
major update; gen 3.5
This commit is contained in:
@@ -33,6 +33,7 @@ namespace UnitTests
|
||||
throw new NetException("bit vector fail 4");
|
||||
}
|
||||
|
||||
/*
|
||||
v = new NetBitVector(9);
|
||||
v.Clear();
|
||||
v.Set(3, true);
|
||||
@@ -61,6 +62,7 @@ namespace UnitTests
|
||||
|
||||
if (v.ToString() != "[10000001000000000000000000000000000001]")
|
||||
throw new NetException("NetBitVector.RotateDown failed 5");
|
||||
*/
|
||||
|
||||
Console.WriteLine("NetBitVector tests OK");
|
||||
}
|
||||
|
||||
@@ -57,90 +57,6 @@ namespace UnitTests
|
||||
throw new NetException("fail");
|
||||
|
||||
Console.WriteLine("Message encryption OK");
|
||||
|
||||
/*
|
||||
Console.WriteLine("x = " + NetUtility.ToHexString(x));
|
||||
Console.WriteLine("v = " + NetUtility.ToHexString(verifier));
|
||||
Console.WriteLine("");
|
||||
|
||||
byte[] a = NetUtility.ToByteArray("d378cc3b09d12cfca5130e22df3f2f3bcf8ecfaddeae6af7f8b3e9f8b4fc9749"); // random
|
||||
Console.WriteLine("a = " + NetUtility.ToHexString(a));
|
||||
byte[] A = NetSRP.ComputeClientChallenge(a);
|
||||
Console.WriteLine("A = " + NetUtility.ToHexString(A));
|
||||
Console.WriteLine("");
|
||||
|
||||
byte[] b = NetUtility.ToByteArray("8394bdaebe1709124f4c1221707053440b30e270d457ece02818da63b53c2482"); // random
|
||||
Console.WriteLine("b = " + NetUtility.ToHexString(b));
|
||||
byte[] B = NetSRP.ComputeServerChallenge(b, verifier);
|
||||
Console.WriteLine("B = " + NetUtility.ToHexString(B));
|
||||
Console.WriteLine("");
|
||||
|
||||
byte[] u = NetSRP.ComputeU(A, B);
|
||||
Console.WriteLine("u = " + NetUtility.ToHexString(u));
|
||||
|
||||
byte[] serverCompareValue; // Ss
|
||||
serverCompareValue = NetSRP.ComputeServerCompareValue(A, verifier, u, b);
|
||||
Console.WriteLine("Ss = " + NetUtility.ToHexString(serverCompareValue));
|
||||
|
||||
byte[] clientCompareValue; // Ss
|
||||
clientCompareValue = NetSRP.ComputeClientCompareValue(B, x, u, a);
|
||||
Console.WriteLine("Sc = " + NetUtility.ToHexString(clientCompareValue));
|
||||
*/
|
||||
|
||||
//
|
||||
// Pre-step:
|
||||
//
|
||||
// Server must store { Username, salt, verifier }
|
||||
//byte[] salt = NetSRP.CreateRandomSalt();
|
||||
byte[] salt = NetUtility.ToByteArray("D016E5A43F0E2A1C8FF8");
|
||||
Console.WriteLine("s = " + NetUtility.ToHexString(salt));
|
||||
byte[] serverVerifier;
|
||||
byte[] clientVerifier;
|
||||
NetSRP.ComputePasswordVerifier("user", "password", salt, out serverVerifier, out clientVerifier);
|
||||
//
|
||||
Console.WriteLine("x = " + NetUtility.ToHexString(clientVerifier));
|
||||
Console.WriteLine("v = " + NetUtility.ToHexString(serverVerifier));
|
||||
|
||||
// CLIENT:
|
||||
// Step 1: Client creates session private/public key pair
|
||||
//byte[] clientPrivateKey = NetSRP.CreateRandomKey();
|
||||
byte[] clientPrivateKey = NetUtility.ToByteArray("EFDBE24D15173DC1FBA22A8D51077AE932841CB2DBA8B09B2CFC5543983B2C7A");
|
||||
Console.WriteLine("a = " + NetUtility.ToHexString(clientPrivateKey));
|
||||
byte[] clientPublicKey = NetSRP.ComputeClientPublicKey(clientPrivateKey);
|
||||
// Step 2: Client sends username and client public key to server
|
||||
|
||||
// SERVER:
|
||||
// Step 3: Server creates session private/public key pair
|
||||
//byte[] serverPrivateKey = NetSRP.CreateRandomKey();
|
||||
byte[] serverPrivateKey = NetUtility.ToByteArray("FB1D472CD89EAF323DB0F7DE80A01CC51DD5A0D1AFC8B79F3CF5A2FC88529ADC");
|
||||
Console.WriteLine("b = " + NetUtility.ToHexString(serverPrivateKey));
|
||||
byte[] serverPublicKey = NetSRP.ComputeServerPublicKey(serverPrivateKey, serverVerifier);
|
||||
// Step 4: Server sends salt and server public key to client
|
||||
|
||||
// CLIENT:
|
||||
// Step 5: Client computes u and compare value
|
||||
byte[] u = NetSRP.ComputeU(clientPublicKey, serverPublicKey);
|
||||
Console.WriteLine("u = " + NetUtility.ToHexString(u));
|
||||
byte[] clientSessionKey = NetSRP.ComputeClientSessionKey(serverPublicKey, clientVerifier, u, clientPrivateKey); // this is where client proves it has x (and thus the password)
|
||||
Console.WriteLine("Sc = " + NetUtility.ToHexString(clientSessionKey));
|
||||
|
||||
// SERVER:
|
||||
// Step 6: Server computes u and compare value
|
||||
// byte[] u = NetSRP.ComputeU(clientPublicKey, serverPublicKey);
|
||||
byte[] serverSessionKey = NetSRP.ComputeServerSessionKey(clientPublicKey, serverVerifier, u, serverPrivateKey);
|
||||
Console.WriteLine("Ss = " + NetUtility.ToHexString(serverSessionKey));
|
||||
|
||||
if (!NetUtility.CompareElements(clientSessionKey, serverSessionKey))
|
||||
Console.WriteLine("BAD!!!!!!!");
|
||||
|
||||
// Console.WriteLine("SRP test OK");
|
||||
/*
|
||||
C ==> S C, A
|
||||
C <== S s, B
|
||||
C ==> S M[1]
|
||||
C <== S M[2]
|
||||
*/
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -88,26 +88,7 @@ namespace UnitTests
|
||||
NetException.Assert(readTest.Number == 42);
|
||||
NetException.Assert(readTest.Name == "Hallon");
|
||||
NetException.Assert(readTest.Age == 8.2f);
|
||||
|
||||
msg = peer.CreateMessage();
|
||||
|
||||
System.IO.BinaryWriter br = new System.IO.BinaryWriter(msg);
|
||||
|
||||
br.Write(true);
|
||||
br.Write("hallon");
|
||||
br.Write((byte)42);
|
||||
|
||||
int byteLen = msg.LengthBytes;
|
||||
byte[] rbts = msg.PeekDataBuffer();
|
||||
|
||||
inc = Program.CreateIncomingMessage(rbts, msg.LengthBits);
|
||||
|
||||
System.IO.BinaryReader rdr = new System.IO.BinaryReader(inc);
|
||||
|
||||
bool one = rdr.ReadBoolean();
|
||||
string hallon = rdr.ReadString();
|
||||
byte fourtyTwo = rdr.ReadByte();
|
||||
|
||||
|
||||
// test aligned WriteBytes/ReadBytes
|
||||
msg = peer.CreateMessage();
|
||||
byte[] tmparr = new byte[] { 5, 6, 7, 8, 9 };
|
||||
|
||||
@@ -5,13 +5,17 @@
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>9.0.21022</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{9D7AC4F7-39CD-4BC8-8F45-00B67C196340}</ProjectGuid>
|
||||
<ProjectGuid>{1515E834-F71E-4D9C-B601-74C709D3A0AE}</ProjectGuid>
|
||||
<OutputType>Exe</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>UnitTests</RootNamespace>
|
||||
<AssemblyName>UnitTests</AssemblyName>
|
||||
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<SccProjectName>SAK</SccProjectName>
|
||||
<SccLocalPath>SAK</SccLocalPath>
|
||||
<SccAuxPath>SAK</SccAuxPath>
|
||||
<SccProvider>SAK</SccProvider>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
@@ -32,19 +36,24 @@
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="BitVectorTests.cs" />
|
||||
<Compile Include="EncryptionTests.cs" />
|
||||
<Compile Include="MiscTests.cs" />
|
||||
<Compile Include="NetQueueTests.cs" />
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="ReadWriteTests.cs" />
|
||||
<Compile Include="EncryptionTests.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Lidgren.Network\Lidgren.Network.csproj">
|
||||
<Project>{FA245447-5F23-4AA1-BD5F-8D2DDF33CFBD}</Project>
|
||||
<Project>{AE483C29-042E-4226-BA52-D247CE7676DA}</Project>
|
||||
<Name>Lidgren.Network</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
|
||||
Reference in New Issue
Block a user