cryptix-ecc 0.1.0

A library containing ecc related traits
Documentation
#![no_std]
#![allow(incomplete_features)]
#![feature(generic_const_exprs)]

use cryptix_field::group::AbelianGroup;

pub trait CurvePoint: AbelianGroup {
    const GENERATOR: Self;

    type MulScalar;

    /// k * self
    fn scalar_mul(self, k: Self::MulScalar) -> Self;

    /// 2 * self
    fn double(self) -> Self;

    /// whether current point is at infinity
    fn at_inf(&self) -> bool;

    fn on_curve(&self) -> bool;

    /// convert point into affine coordinate
    fn normalize(self) -> Self;
    
    fn mont_form(self) -> Self;
    fn mont_rdc(self) -> Self;
}