123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- #if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
- using System;
- namespace Org.BouncyCastle.Math.Raw
- {
- internal abstract class Interleave
- {
- private const ulong M32 = 0x55555555UL;
- private const ulong M64 = 0x5555555555555555UL;
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- internal static uint Expand8to16(uint x)
- {
- x &= 0xFFU;
- x = (x | (x << 4)) & 0x0F0FU;
- x = (x | (x << 2)) & 0x3333U;
- x = (x | (x << 1)) & 0x5555U;
- return x;
- }
- internal static uint Expand16to32(uint x)
- {
- x &= 0xFFFFU;
- x = (x | (x << 8)) & 0x00FF00FFU;
- x = (x | (x << 4)) & 0x0F0F0F0FU;
- x = (x | (x << 2)) & 0x33333333U;
- x = (x | (x << 1)) & 0x55555555U;
- return x;
- }
- internal static ulong Expand32to64(uint x)
- {
-
- uint t;
- t = (x ^ (x >> 8)) & 0x0000FF00U; x ^= (t ^ (t << 8));
- t = (x ^ (x >> 4)) & 0x00F000F0U; x ^= (t ^ (t << 4));
- t = (x ^ (x >> 2)) & 0x0C0C0C0CU; x ^= (t ^ (t << 2));
- t = (x ^ (x >> 1)) & 0x22222222U; x ^= (t ^ (t << 1));
- return ((x >> 1) & M32) << 32 | (x & M32);
- }
- internal static void Expand64To128(ulong x, ulong[] z, int zOff)
- {
-
- ulong t;
- t = (x ^ (x >> 16)) & 0x00000000FFFF0000UL; x ^= (t ^ (t << 16));
- t = (x ^ (x >> 8)) & 0x0000FF000000FF00UL; x ^= (t ^ (t << 8));
- t = (x ^ (x >> 4)) & 0x00F000F000F000F0UL; x ^= (t ^ (t << 4));
- t = (x ^ (x >> 2)) & 0x0C0C0C0C0C0C0C0CUL; x ^= (t ^ (t << 2));
- t = (x ^ (x >> 1)) & 0x2222222222222222UL; x ^= (t ^ (t << 1));
- z[zOff ] = (x ) & M64;
- z[zOff + 1] = (x >> 1) & M64;
- }
- internal static ulong Unshuffle(ulong x)
- {
-
- ulong t;
- t = (x ^ (x >> 1)) & 0x2222222222222222UL; x ^= (t ^ (t << 1));
- t = (x ^ (x >> 2)) & 0x0C0C0C0C0C0C0C0CUL; x ^= (t ^ (t << 2));
- t = (x ^ (x >> 4)) & 0x00F000F000F000F0UL; x ^= (t ^ (t << 4));
- t = (x ^ (x >> 8)) & 0x0000FF000000FF00UL; x ^= (t ^ (t << 8));
- t = (x ^ (x >> 16)) & 0x00000000FFFF0000UL; x ^= (t ^ (t << 16));
- return x;
- }
- }
- }
- #endif
|