1
0
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:
lidgren
2010-10-19 17:45:55 +00:00
parent baaa5926f8
commit 609bc1afe2
167 changed files with 4065 additions and 9640 deletions

View File

@@ -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");
}

View File

@@ -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]
*/
}
}
}

View File

@@ -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 };

View File

@@ -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>