Files
SuperVPN/output/Libraries/BouncyCastle.Crypto/Org/BouncyCastle/Bcpg/MPInteger.cs
2025-10-09 09:57:24 +09:00

49 lines
1016 B
C#

using System;
using Org.BouncyCastle.Math;
namespace Org.BouncyCastle.Bcpg;
public class MPInteger : BcpgObject
{
private readonly BigInteger val;
public BigInteger Value => val;
public MPInteger(BcpgInputStream bcpgIn)
{
if (bcpgIn == null)
{
throw new ArgumentNullException("bcpgIn");
}
int num = (bcpgIn.ReadByte() << 8) | bcpgIn.ReadByte();
byte[] array = new byte[(num + 7) / 8];
bcpgIn.ReadFully(array);
val = new BigInteger(1, array);
}
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 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());
}
}