# BLS381 curve constants

from constants import *

SHA = 'sha256'   # hash type to use with this curve
EFS = 48   # Elliptic curve Field Size in bytes
CurveType = WEIERSTRASS

SexticTwist = M_TYPE
SignOfX = NEGATIVEX
PairingFriendly = BLS

x = 0xd201000000010000

if SignOfX == NEGATIVEX:
    p = (x**6 + 2 * x**5 - 2 * x**3 - x + 1) // 3
    t = -x + 1
else:
    p = (x**6 - 2 * x**5 + 2 * x**3 + x + 1) // 3
    t = x + 1

r = x * x * x * x - x * x + 1

# elliptic curve
A = 0
B = 4

# generator point on G1
Gx = 0x17F1D3A73197D7942695638C4FA9AC0FC3688C4F9774B905A14E3A3F171BAC586C55E83FF97A1AEFFB3AF00ADB22C6BB
Gy = 0x8B3F481E3AAA0F1A09E30ED741D8AE4FCF5E095D5D00AF600DB18CB2C04B3EDD03CC744A2888AE40CAA232946C5E7E1

# Frobenius constant
Fra = 0x1904D3BF02BB0667C231BEB4202C0D1F0FD603FD3CBD5F4F7B2443D784BAB9C4F67EA53D63E7813D8D0775ED92235FB8
Frb = 0xFC3E2B36C4E03288E9E902231F9FB854A14787B6C7B36FEC0C8EC971F63C5F282D5AC14D6C7EC22CF78A126DDC4AF3

# Generator point on G2
Pxa = 0x24AA2B2F08F0A91260805272DC51051C6E47AD4FA403B02B4510B647AE3D1770BAC0326A805BBEFD48056C8C121BDB8
Pxb = 0x13E02B6052719F607DACD3A088274F65596BD0D09920B61AB5DA61BBDC7F5049334CF11213945D57E5AC7D055D042B7E
Pya = 0xCE5D527727D6E118CC9CDC6DA2E351AADFD9BAA8CBDD3A76D429A695160D12C923AC9CC3BACA289E193548608B82801
Pyb = 0x606C4A02EA734CC32ACD2B02BC28B99CB3E287E85A763AF267492AB572E99AB3F370D275CEC1DA1AAA9075FF05F79BE
