blob: 05234cf9840d3913f994998ad9b8e935a7cb546c [file] [log] [blame] [view]
---
id: ecp8
title: ECP8
sidebar_label: ECP8
---
<a name="ECP8"></a>
## ECP8
**Kind**: global class
**this**: <code>{ECP8}</code>
* [ECP8](#ECP8)
* [new ECP8()](#new_ECP8_new)
* _instance_
* [.is_infinity(1)](#ECP8+is_infinity)
* [.copy(P)](#ECP8+copy)
* [.inf()](#ECP8+inf)
* [.cmove()](#ECP8+cmove)
* [.select()](#ECP8+select)
* [.equals(Q)](#ECP8+equals)
* [.neg()](#ECP8+neg)
* [.affine()](#ECP8+affine)
* [.getX()](#ECP8+getX)
* [.getY()](#ECP8+getY)
* [.getx()](#ECP8+getx)
* [.gety()](#ECP8+gety)
* [.getz()](#ECP8+getz)
* [.toBytes(b)](#ECP8+toBytes)
* [.toString()](#ECP8+toString)
* [.setxy(ix, iy)](#ECP8+setxy)
* [.setx(ix)](#ECP8+setx)
* [.frob()](#ECP8+frob)
* [.dbl()](#ECP8+dbl)
* [.add()](#ECP8+add)
* [.sub(Q)](#ECP8+sub)
* [.mul(e)](#ECP8+mul)
* _static_
* [.generator()](#ECP8.generator)
* [.fromBytes(b)](#ECP8.fromBytes)
* [.RHS(x)](#ECP8.RHS)
* [.mul16()](#ECP8.mul16)
<a name="new_ECP8_new"></a>
### new ECP8()
Creates an instance of ECP8
<a name="ECP8+is_infinity"></a>
### ecP8.is\_infinity(1)
Tests for ECP8 point equal to infinity
**Kind**: instance method of [<code>ECP8</code>](#ECP8)
**this**: <code>{ECP8}</code>
| Param | Description |
| --- | --- |
| 1 | if infinity, else returns 0 |
<a name="ECP8+copy"></a>
### ecP8.copy(P)
Copy ECP8 point to another ECP8 point
**Kind**: instance method of [<code>ECP8</code>](#ECP8)
**this**: <code>{ECP8}</code>
| Param | Description |
| --- | --- |
| P | ECP8 instance |
<a name="ECP8+inf"></a>
### ecP8.inf()
Set ECP8 to point-at-infinity
**Kind**: instance method of [<code>ECP8</code>](#ECP8)
**this**: <code>{ECP8}</code>
<a name="ECP8+cmove"></a>
### ecP8.cmove()
conditional move of Q to P dependant on d
**Kind**: instance method of [<code>ECP8</code>](#ECP8)
**this**: <code>{ECP8}</code>
<a name="ECP8+select"></a>
### ecP8.select()
Constant time select from pre-computed table
**Kind**: instance method of [<code>ECP8</code>](#ECP8)
**this**: <code>{ECP8}</code>
<a name="ECP8+equals"></a>
### ecP8.equals(Q)
Test P == Q
**Kind**: instance method of [<code>ECP8</code>](#ECP8)
**this**: <code>{ECP8}</code>
| Param | Description |
| --- | --- |
| Q | ECP8 instance |
<a name="ECP8+neg"></a>
### ecP8.neg()
set this=-this
**Kind**: instance method of [<code>ECP8</code>](#ECP8)
**this**: <code>{ECP8}</code>
<a name="ECP8+affine"></a>
### ecP8.affine()
convert this to affine, from (x,y,z) to (x,y)
**Kind**: instance method of [<code>ECP8</code>](#ECP8)
**this**: <code>{ECP8}</code>
<a name="ECP8+getX"></a>
### ecP8.getX()
extract affine x as ctx.FP2
**Kind**: instance method of [<code>ECP8</code>](#ECP8)
**this**: <code>{ECP8}</code>
<a name="ECP8+getY"></a>
### ecP8.getY()
extract affine y as ctx.FP2
**Kind**: instance method of [<code>ECP8</code>](#ECP8)
**this**: <code>{ECP8}</code>
<a name="ECP8+getx"></a>
### ecP8.getx()
extract projective x
**Kind**: instance method of [<code>ECP8</code>](#ECP8)
**this**: <code>{ECP8}</code>
<a name="ECP8+gety"></a>
### ecP8.gety()
extract projective y
**Kind**: instance method of [<code>ECP8</code>](#ECP8)
**this**: <code>{ECP8}</code>
<a name="ECP8+getz"></a>
### ecP8.getz()
extract projective z
**Kind**: instance method of [<code>ECP8</code>](#ECP8)
**this**: <code>{ECP8}</code>
<a name="ECP8+toBytes"></a>
### ecP8.toBytes(b)
convert this to byte arrayextract projective x
**Kind**: instance method of [<code>ECP8</code>](#ECP8)
**this**: <code>{ECP8}</code>
| Param | Description |
| --- | --- |
| b | byte array output |
<a name="ECP8+toString"></a>
### ecP8.toString() ⇒
convert this to hex string
**Kind**: instance method of [<code>ECP8</code>](#ECP8)
**Returns**: hex string
**this**: <code>{ECP8}</code>
<a name="ECP8+setxy"></a>
### ecP8.setxy(ix, iy)
set this=(x,y)
**Kind**: instance method of [<code>ECP8</code>](#ECP8)
**this**: <code>{ECP8}</code>
| Param | Description |
| --- | --- |
| ix | x-value |
| iy | y-value |
<a name="ECP8+setx"></a>
### ecP8.setx(ix)
set this=(x,.)
**Kind**: instance method of [<code>ECP8</code>](#ECP8)
**this**: <code>{ECP8}</code>
| Param | Description |
| --- | --- |
| ix | x-value |
<a name="ECP8+frob"></a>
### ecP8.frob()
set this*=q, where q is Modulus, using Frobenius
**Kind**: instance method of [<code>ECP8</code>](#ECP8)
**this**: <code>{ECP8}</code>
<a name="ECP8+dbl"></a>
### ecP8.dbl()
this+=this
**Kind**: instance method of [<code>ECP8</code>](#ECP8)
**this**: <code>{ECP8}</code>
<a name="ECP8+add"></a>
### ecP8.add()
Adds ECP8 instances
param Q ECP8 instance
**Kind**: instance method of [<code>ECP8</code>](#ECP8)
**this**: <code>{ECP8}</code>
<a name="ECP8+sub"></a>
### ecP8.sub(Q)
Subtracts ECP instance Q from this
**Kind**: instance method of [<code>ECP8</code>](#ECP8)
**this**: <code>{ECP8}</code>
| Param | Description |
| --- | --- |
| Q | ECP8 instance |
<a name="ECP8+mul"></a>
### ecP8.mul(e)
Multiplies an ECP8 instance P by a BIG, side-channel resistant
**Kind**: instance method of [<code>ECP8</code>](#ECP8)
**this**: <code>{ECP8}</code>
| Param | Description |
| --- | --- |
| e | BIG number multiplier |
<a name="ECP8.generator"></a>
### ECP8.generator()
Set group generator
**Kind**: static method of [<code>ECP8</code>](#ECP8)
**this**: <code>{ECP8}</code>
<a name="ECP8.fromBytes"></a>
### ECP8.fromBytes(b)
convert from byte array to point
**Kind**: static method of [<code>ECP8</code>](#ECP8)
**this**: <code>{ECP8}</code>
| Param | Description |
| --- | --- |
| b | input byte array |
<a name="ECP8.RHS"></a>
### ECP8.RHS(x)
Calculate RHS of curve equation x^3+B
**Kind**: static method of [<code>ECP8</code>](#ECP8)
**this**: <code>{ECP8}</code>
| Param | Description |
| --- | --- |
| x | x-value |
<a name="ECP8.mul16"></a>
### ECP8.mul16()
Calculate P=u0.Q0+u1*Q1+u2*Q2+u3*Q3...
**Kind**: static method of [<code>ECP8</code>](#ECP8)
**this**: <code>{ECP8}</code>