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.
64 lines
1.4 KiB
64 lines
1.4 KiB
1 year ago
|
#if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
|
||
|
#pragma warning disable
|
||
|
using System;
|
||
|
using System.IO;
|
||
|
|
||
|
using BestHTTP.SecureProtocol.Org.BouncyCastle.Math;
|
||
|
|
||
|
namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Bcpg
|
||
|
{
|
||
|
/// <remarks>A multiple precision integer</remarks>
|
||
|
public class MPInteger
|
||
|
: BcpgObject
|
||
|
{
|
||
|
private readonly BigInteger val;
|
||
|
|
||
|
public MPInteger(
|
||
|
BcpgInputStream bcpgIn)
|
||
|
{
|
||
|
if (bcpgIn == null)
|
||
|
throw new ArgumentNullException("bcpgIn");
|
||
|
|
||
|
int length = (bcpgIn.ReadByte() << 8) | bcpgIn.ReadByte();
|
||
|
byte[] bytes = new byte[(length + 7) / 8];
|
||
|
|
||
|
bcpgIn.ReadFully(bytes);
|
||
|
|
||
|
this.val = new BigInteger(1, bytes);
|
||
|
}
|
||
|
|
||
|
public MPInteger(
|
||
|
BigInteger val)
|
||
|
{
|
||
|
if (val == null)
|
||
|
throw new ArgumentNullException("val");
|
||
|
if (val.SignValue < 0)
|
||
|
throw new ArgumentException("Values must be positive", "val");
|
||
|
|
||
|
this.val = val;
|
||
|
}
|
||
|
|
||
|
public BigInteger Value
|
||
|
{
|
||
|
get { return val; }
|
||
|
}
|
||
|
|
||
|
public override void Encode(
|
||
|
BcpgOutputStream bcpgOut)
|
||
|
{
|
||
|
bcpgOut.WriteShort((short) val.BitLength);
|
||
|
bcpgOut.Write(val.ToByteArrayUnsigned());
|
||
|
}
|
||
|
|
||
|
internal static void Encode(
|
||
|
BcpgOutputStream bcpgOut,
|
||
|
BigInteger val)
|
||
|
{
|
||
|
bcpgOut.WriteShort((short) val.BitLength);
|
||
|
bcpgOut.Write(val.ToByteArrayUnsigned());
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
#pragma warning restore
|
||
|
#endif
|