navio-blsct
Version:
TypeScript bindings for the `libblsct` library used by the [Navio](https://nav.io/) blockchain to construct confidential transactions based on the BLS12-381 curve.
73 lines (61 loc) • 1.38 kB
text/typescript
import {
castToPoint,
deserializePoint,
freeObj,
genBasePoint,
genRandomPoint,
isPointEqual,
isValidPoint,
pointFromScalar,
pointToStr,
serializePoint,
} from './blsct'
import { ManagedObj } from './managedObj'
import { Scalar } from './scalar'
export class Point extends ManagedObj {
constructor(obj?: any) {
if (typeof obj === 'object') {
super(obj)
} else (
super(genRandomPoint().value)
)
}
override value(): any {
return castToPoint(this.obj)
}
static random(): Point {
const rv = genRandomPoint()
const x = Point.fromObj(rv.value)
freeObj(rv)
return x
}
static base(): Point {
const rv = genBasePoint()
const x = Point.fromObj(rv.value)
freeObj(rv)
return x
}
static fromScalar(scalar: Scalar): Point {
const obj = pointFromScalar(scalar.value())
return Point.fromObj(obj)
}
isValid(): boolean {
return isValidPoint(this.value())
}
override toString(): string {
const s = pointToStr(this.value())
return `Point(${s})`
}
equals(other: Point): boolean {
return isPointEqual(this.value(), other.value())
}
override serialize(): string {
return serializePoint(this.value())
}
static deserialize(
this: new (obj: any) => Point,
hex: string
): Point {
return Point._deserialize(hex, deserializePoint)
}
}