init commit
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
using Org.BouncyCastle.Math.EC;
|
||||
using Org.BouncyCastle.Utilities;
|
||||
|
||||
namespace Org.BouncyCastle.Asn1.X9;
|
||||
|
||||
public class X9ECPoint : Asn1Encodable
|
||||
{
|
||||
private readonly Asn1OctetString encoding;
|
||||
|
||||
private ECCurve c;
|
||||
|
||||
private ECPoint p;
|
||||
|
||||
public ECPoint Point
|
||||
{
|
||||
get
|
||||
{
|
||||
if (p == null)
|
||||
{
|
||||
p = c.DecodePoint(encoding.GetOctets()).Normalize();
|
||||
}
|
||||
return p;
|
||||
}
|
||||
}
|
||||
|
||||
public bool IsPointCompressed
|
||||
{
|
||||
get
|
||||
{
|
||||
byte[] octets = encoding.GetOctets();
|
||||
if (octets != null && octets.Length > 0)
|
||||
{
|
||||
if (octets[0] != 2)
|
||||
{
|
||||
return octets[0] == 3;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public X9ECPoint(ECPoint p)
|
||||
: this(p, compressed: false)
|
||||
{
|
||||
}
|
||||
|
||||
public X9ECPoint(ECPoint p, bool compressed)
|
||||
{
|
||||
this.p = p.Normalize();
|
||||
encoding = new DerOctetString(p.GetEncoded(compressed));
|
||||
}
|
||||
|
||||
public X9ECPoint(ECCurve c, byte[] encoding)
|
||||
{
|
||||
this.c = c;
|
||||
this.encoding = new DerOctetString(Arrays.Clone(encoding));
|
||||
}
|
||||
|
||||
public X9ECPoint(ECCurve c, Asn1OctetString s)
|
||||
: this(c, s.GetOctets())
|
||||
{
|
||||
}
|
||||
|
||||
public byte[] GetPointEncoding()
|
||||
{
|
||||
return Arrays.Clone(encoding.GetOctets());
|
||||
}
|
||||
|
||||
public override Asn1Object ToAsn1Object()
|
||||
{
|
||||
return encoding;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user