1234567891011121314151617181920212223242526272829303132333435363738 |
- #if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
- #pragma warning disable
- using System;
- namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Math.EC.Multiplier
- {
- /**
- * Class implementing the NAF (Non-Adjacent Form) multiplication algorithm (right-to-left).
- */
- public class NafR2LMultiplier
- : AbstractECMultiplier
- {
- protected override ECPoint MultiplyPositive(ECPoint p, BigInteger k)
- {
- int[] naf = WNafUtilities.GenerateCompactNaf(k);
- ECPoint R0 = p.Curve.Infinity, R1 = p;
- int zeroes = 0;
- for (int i = 0; i < naf.Length; ++i)
- {
- int ni = naf[i];
- int digit = ni >> 16;
- zeroes += ni & 0xFFFF;
- R1 = R1.TimesPow2(zeroes);
- R0 = R0.Add(digit < 0 ? R1.Negate() : R1);
- zeroes = 1;
- }
- return R0;
- }
- }
- }
- #pragma warning restore
- #endif
|