sylow 0.1.1

Implementation of the BLS signature scheme using the alt-bn128 curve.
Documentation
from sagelib.utils import *
from operator import truediv


class FieldDivision(metaclass=FieldTestMetaclass):
    def __init__(self):
        self.D = 1
        self.operation = truediv


class QuadraticFieldDivision(metaclass=FieldTestMetaclass):
    def __init__(self):
        self.D = 2
        self.operation = truediv


class SexticFieldDivision(metaclass=FieldTestMetaclass):
    def __init__(self):
        self.D = 6
        self.operation = truediv


# class DodecticFieldDivision(metaclass=FieldTestMetaclass, D=2):
#     pass


class FieldDivisionTest(FieldDivision):
    Fp_test_values = [
        ([1, 2, 3, 4], [1, 0, 0, 0]),
    ]


class QuadraticFieldDivisionTest(QuadraticFieldDivision):
    Fp2_test_values = [
        ([[4, 3, 2, 1], [1, 1, 1, 1]], [[1, 1, 1, 1], [1, 2, 3, 4]]),
    ]


#
class SexticFieldDivisionTest(SexticFieldDivision):
    Fp6_test_values = [
        (
            [
                [[1, 0, 0, 0], [0, 2, 0, 0]],
                [[0, 0, 3, 0], [0, 0, 0, 4]],
                [[5, 0, 0, 0], [0, 6, 0, 0]],
            ],
            [
                [[0, 6, 0, 0], [5, 0, 0, 0]],
                [[0, 0, 0, 4], [0, 0, 3, 0]],
                [[0, 2, 0, 0], [1, 0, 0, 0]],
            ],
        )
    ]