You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
1.1 KiB
56 lines
1.1 KiB
11 months ago
|
#if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
|
||
|
#pragma warning disable
|
||
|
using System;
|
||
|
|
||
|
namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Engines
|
||
|
{
|
||
|
public class VmpcKsa3Engine
|
||
|
: VmpcEngine
|
||
|
{
|
||
|
public override string AlgorithmName
|
||
|
{
|
||
|
get { return "VMPC-KSA3"; }
|
||
|
}
|
||
|
|
||
|
protected override void InitKey(
|
||
|
byte[] keyBytes,
|
||
|
byte[] ivBytes)
|
||
|
{
|
||
|
s = 0;
|
||
|
P = new byte[256];
|
||
|
for (int i = 0; i < 256; i++)
|
||
|
{
|
||
|
P[i] = (byte) i;
|
||
|
}
|
||
|
|
||
|
for (int m = 0; m < 768; m++)
|
||
|
{
|
||
|
s = P[(s + P[m & 0xff] + keyBytes[m % keyBytes.Length]) & 0xff];
|
||
|
byte temp = P[m & 0xff];
|
||
|
P[m & 0xff] = P[s & 0xff];
|
||
|
P[s & 0xff] = temp;
|
||
|
}
|
||
|
|
||
|
for (int m = 0; m < 768; m++)
|
||
|
{
|
||
|
s = P[(s + P[m & 0xff] + ivBytes[m % ivBytes.Length]) & 0xff];
|
||
|
byte temp = P[m & 0xff];
|
||
|
P[m & 0xff] = P[s & 0xff];
|
||
|
P[s & 0xff] = temp;
|
||
|
}
|
||
|
|
||
|
for (int m = 0; m < 768; m++)
|
||
|
{
|
||
|
s = P[(s + P[m & 0xff] + keyBytes[m % keyBytes.Length]) & 0xff];
|
||
|
byte temp = P[m & 0xff];
|
||
|
P[m & 0xff] = P[s & 0xff];
|
||
|
P[s & 0xff] = temp;
|
||
|
}
|
||
|
|
||
|
n = 0;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
#pragma warning restore
|
||
|
#endif
|