1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- #if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
- #pragma warning disable
- using System;
- using BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities;
- namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Modes.Gcm
- {
- public class BasicGcmExponentiator
- : IGcmExponentiator
- {
- private ulong[] x;
- public void Init(byte[] x)
- {
- this.x = GcmUtilities.AsUlongs(x);
- }
- public void ExponentiateX(long pow, byte[] output)
- {
- // Initial value is little-endian 1
- ulong[] y = GcmUtilities.OneAsUlongs();
- if (pow > 0)
- {
- ulong[] powX = Arrays.Clone(x);
- do
- {
- if ((pow & 1L) != 0)
- {
- GcmUtilities.Multiply(y, powX);
- }
- GcmUtilities.Square(powX, powX);
- pow >>= 1;
- }
- while (pow > 0);
- }
- GcmUtilities.AsBytes(y, output);
- }
- }
- }
- #pragma warning restore
- #endif
|