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.
63 lines
1.4 KiB
63 lines
1.4 KiB
#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
|
|
|