001package org.apache.commons.ssl.org.bouncycastle.asn1.x9;
002
003import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Object;
004import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1OctetString;
005import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Primitive;
006import org.apache.commons.ssl.org.bouncycastle.asn1.DEROctetString;
007import org.bouncycastle.math.ec.ECCurve;
008import org.bouncycastle.math.ec.ECPoint;
009
010/**
011 * class for describing an ECPoint as a DER object.
012 */
013public class X9ECPoint
014    extends ASN1Object
015{
016    ECPoint p;
017
018    public X9ECPoint(
019        ECPoint p)
020    {
021        this.p = p.normalize();
022    }
023
024    public X9ECPoint(
025        ECCurve          c,
026        ASN1OctetString  s)
027    {
028        this.p = c.decodePoint(s.getOctets());
029    }
030
031    public ECPoint getPoint()
032    {
033        return p;
034    }
035
036    /**
037     * Produce an object suitable for an ASN1OutputStream.
038     * <pre>
039     *  ECPoint ::= OCTET STRING
040     * </pre>
041     * <p>
042     * Octet string produced using ECPoint.getEncoded().
043     */
044    public ASN1Primitive toASN1Primitive()
045    {
046        return new DEROctetString(p.getEncoded());
047    }
048}