| /* |
| Licensed to the Apache Software Foundation (ASF) under one |
| or more contributor license agreements. See the NOTICE file |
| distributed with this work for additional information |
| regarding copyright ownership. The ASF licenses this file |
| to you under the Apache License, Version 2.0 (the |
| "License"); you may not use this file except in compliance |
| with the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, |
| software distributed under the License is distributed on an |
| "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| KIND, either express or implied. See the License for the |
| specific language governing permissions and limitations |
| under the License. |
| */ |
| |
| // |
| // rom.swift |
| // |
| // Created by Michael Scott on 12/06/2015. |
| // Copyright (c) 2015 Michael Scott. All rights reserved. |
| // |
| |
| public struct ROM{ |
| |
| #if D32 |
| |
| // Base Bits= 29 |
| // bls381 Curve Modulus |
| |
| |
| static let Modulus:[Chunk] = [0x1FFFAAAB,0xFF7FFFF,0x14FFFFEE,0x17FFFD62,0xF6241EA,0x9507B58,0xAFD9CC3,0x109E70A2,0x1764774B,0x121A5D66,0x12C6E9ED,0x12FFCD34,0x111EA3,0xD] |
| static let R2modp:[Chunk] = [0x15BEF7AE,0x1031CD0E,0x2DD93E8,0x9226323,0xE6E2CD2,0x11684DAA,0x1170E5DB,0x88E25B1,0x1B366399,0x1C536F47,0xD1F9CBC,0x278B67F,0x1EA66A2B,0xC] |
| static let MConst:Chunk = 0x1FFCFFFD |
| static public let Fra:[Chunk] = [0x12235FB8,0x83BAF6C,0x19E04F63,0x1D4A7AC7,0xB9C4F67,0x1EBC25D,0x1D3DEC91,0x1FA797AB,0x1F0FD603,0x1016068,0x108C6FAD,0x5760CCF,0x104D3BF0,0xC] |
| static public let Frb:[Chunk] = [0xDDC4AF3,0x7BC5093,0x1B1FB08B,0x1AB5829A,0x3C5F282,0x764B8FB,0xDBFB032,0x10F6D8F6,0x1854A147,0x1118FCFD,0x23A7A40,0xD89C065,0xFC3E2B3,0x0] |
| |
| static let CURVE_Cof_I:Int = 0 |
| static let CURVE_A:Int = 0 |
| static let CURVE_B_I:Int = 4 |
| static public let CURVE_B:[Chunk] = [0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0] |
| static public let CURVE_Order:[Chunk] = [0x1,0x1FFFFFF8,0x1F96FFBF,0x1B4805FF,0x1D80553B,0xC0404D0,0x1520CCE7,0xA6533AF,0x73EDA7,0x0,0x0,0x0,0x0,0x0] |
| static public let CURVE_Gx:[Chunk] = [0x1B22C6BB,0x19D78056,0x1E86BBFE,0xBD07FF2,0x1AC586C5,0x1D1F8B8D,0x4168538,0x9F2EE97,0xFC3688C,0x27D4D60,0x9A558E3,0x32FAF28,0x1F1D3A73,0xB] |
| static public let CURVE_Gy:[Chunk] = [0x6C5E7E1,0x551194A,0x222B903,0x198E8945,0xB3EDD03,0xC659602,0xBD8036C,0x12BABA01,0x4FCF5E0,0xBA0EC57,0x8278C3B,0x75541E3,0xB3F481E,0x4] |
| |
| static public let CURVE_Bnx:[Chunk] = [0x10000,0x10080000,0x34,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0] |
| static public let CURVE_Cof:[Chunk] = [0xAAAB,0x55558,0x157855A3,0x191800AA,0x396,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0] |
| static public let CURVE_Cru:[Chunk] = [0x1FFEFFFE,0x100FFFFF,0x280008B,0xFB026C4,0x9688DE1,0x149DF37C,0x1FAB76CE,0xED41EE,0x11BA69C6,0x1EFBB672,0x17C659CB,0x0,0x0,0x0] |
| |
| static public let CURVE_Pxa:[Chunk] = [0x121BDB8,0x402B646,0x16EFBF5,0x18064D50,0x1D1770BA,0x5B23D71,0xC0AD144,0x1A9F4807,0x11C6E47A,0x196E2882,0x9820149,0x11E1522,0x4AA2B2F,0x1] |
| static public let CURVE_Pxb:[Chunk] = [0x1D042B7E,0xD63E82A,0x51755F9,0x19E22427,0x15049334,0x10DDEE3F,0x186AD769,0x1A132416,0x5596BD0,0x4413A7B,0x1F6B34E8,0x4E33EC0,0x1E02B605,0x9] |
| static public let CURVE_Pya:[Chunk] = [0x8B82801,0xC9AA430,0xB28A278,0x15939877,0xD12C923,0xD34A8B0,0xE9DB50A,0x155197BA,0x1AADFD9B,0x16D171A8,0x3327371,0x4FADC23,0xE5D5277,0x6] |
| static public let CURVE_Pyb:[Chunk] = [0x105F79BE,0x15483AFF,0x1B07686A,0xE1A4EB9,0x99AB3F3,0x955AB97,0xEBC99D2,0xFD0B4EC,0x19CB3E28,0x15E145C,0xCAB34AC,0x1D4E6998,0x6C4A02,0x3] |
| static let CURVE_W:[[Chunk]] = [[0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0],[0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0]] |
| static let CURVE_SB:[[[Chunk]]] = [[[0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0],[0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0]],[[0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0],[0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0]]] |
| static let CURVE_WB:[[Chunk]] = [[0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0],[0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0],[0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0],[0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0]] |
| static let CURVE_BB:[[[Chunk]]] = [[[0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0],[0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0],[0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0],[0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0]],[[0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0],[0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0],[0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0],[0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0]],[[0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0],[0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0],[0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0],[0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0]],[[0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0],[0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0],[0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0],[0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0]]] |
| |
| #endif |
| |
| #if D64 |
| |
| // Base Bits= 58 |
| // bls381 Curve Modulus |
| |
| static let Modulus:[Chunk] = [0x1FEFFFFFFFFAAAB,0x2FFFFAC54FFFFEE,0x12A0F6B0F6241EA,0x213CE144AFD9CC3,0x2434BACD764774B,0x25FF9A692C6E9ED,0x1A0111EA3] |
| static let R2modp:[Chunk] = [0x20639A1D5BEF7AE,0x1244C6462DD93E8,0x22D09B54E6E2CD2,0x111C4B63170E5DB,0x38A6DE8FB366399,0x4F16CFED1F9CBC,0x19EA66A2B] |
| static let MConst:Chunk = 0x1F3FFFCFFFCFFFD |
| static public let Fra:[Chunk] = [0x10775ED92235FB8,0x3A94F58F9E04F63,0x3D784BAB9C4F67,0x3F4F2F57D3DEC91,0x202C0D1F0FD603,0xAEC199F08C6FAD,0x1904D3BF0] |
| static public let Frb:[Chunk] = [0xF78A126DDC4AF3,0x356B0535B1FB08B,0xEC971F63C5F282,0x21EDB1ECDBFB032,0x2231F9FB854A147,0x1B1380CA23A7A40,0xFC3E2B3] |
| |
| static let CURVE_Cof_I:Int = 0 |
| static let CURVE_A:Int = 0 |
| static let CURVE_B_I:Int = 4 |
| static public let CURVE_B:[Chunk] = [0x4,0x0,0x0,0x0,0x0,0x0,0x0] |
| static public let CURVE_Order:[Chunk] = [0x3FFFFFF00000001,0x36900BFFF96FFBF,0x180809A1D80553B,0x14CA675F520CCE7,0x73EDA7,0x0,0x0] |
| static public let CURVE_Gx:[Chunk] = [0x33AF00ADB22C6BB,0x17A0FFE5E86BBFE,0x3A3F171BAC586C5,0x13E5DD2E4168538,0x4FA9AC0FC3688C,0x65F5E509A558E3,0x17F1D3A73] |
| static public let CURVE_Gy:[Chunk] = [0xAA232946C5E7E1,0x331D128A222B903,0x18CB2C04B3EDD03,0x25757402BD8036C,0x1741D8AE4FCF5E0,0xEAA83C68278C3B,0x8B3F481E] |
| |
| |
| static public let CURVE_Bnx:[Chunk] = [0x201000000010000,0x34,0x0,0x0,0x0,0x0,0x0] |
| static public let CURVE_Cof:[Chunk] = [0xAAAB0000AAAB,0x3230015557855A3,0x396,0x0,0x0,0x0,0x0] |
| static public let CURVE_Cru:[Chunk] = [0x201FFFFFFFEFFFE,0x1F604D88280008B,0x293BE6F89688DE1,0x1DA83DDFAB76CE,0x3DF76CE51BA69C6,0x17C659CB,0x0] |
| |
| static public let CURVE_Pxa:[Chunk] = [0x8056C8C121BDB8,0x300C9AA016EFBF5,0xB647AE3D1770BA,0x353E900EC0AD144,0x32DC51051C6E47A,0x23C2A449820149,0x24AA2B2F] |
| static public let CURVE_Pxb:[Chunk] = [0x1AC7D055D042B7E,0x33C4484E51755F9,0x21BBDC7F5049334,0x3426482D86AD769,0x88274F65596BD0,0x9C67D81F6B34E8,0x13E02B605] |
| static public let CURVE_Pya:[Chunk] = [0x193548608B82801,0x2B2730EEB28A278,0x1A695160D12C923,0x2AA32F74E9DB50A,0x2DA2E351AADFD9B,0x9F5B8463327371,0xCE5D5277] |
| static public let CURVE_Pyb:[Chunk] = [0x2A9075FF05F79BE,0x1C349D73B07686A,0x12AB572E99AB3F3,0x1FA169D8EBC99D2,0x2BC28B99CB3E28,0x3A9CD330CAB34AC,0x606C4A02] |
| static let CURVE_W:[[Chunk]] = [[0x0,0x0,0x0,0x0,0x0,0x0,0x0],[0x0,0x0,0x0,0x0,0x0,0x0,0x0]] |
| static let CURVE_SB:[[[Chunk]]] = [[[0x0,0x0,0x0,0x0,0x0,0x0,0x0],[0x0,0x0,0x0,0x0,0x0,0x0,0x0]],[[0x0,0x0,0x0,0x0,0x0,0x0,0x0],[0x0,0x0,0x0,0x0,0x0,0x0,0x0]]] |
| static let CURVE_WB:[[Chunk]] = [[0x0,0x0,0x0,0x0,0x0,0x0,0x0],[0x0,0x0,0x0,0x0,0x0,0x0,0x0],[0x0,0x0,0x0,0x0,0x0,0x0,0x0],[0x0,0x0,0x0,0x0,0x0,0x0,0x0]] |
| static let CURVE_BB:[[[Chunk]]] = [[[0x0,0x0,0x0,0x0,0x0,0x0,0x0],[0x0,0x0,0x0,0x0,0x0,0x0,0x0],[0x0,0x0,0x0,0x0,0x0,0x0,0x0],[0x0,0x0,0x0,0x0,0x0,0x0,0x0]],[[0x0,0x0,0x0,0x0,0x0,0x0,0x0],[0x0,0x0,0x0,0x0,0x0,0x0,0x0],[0x0,0x0,0x0,0x0,0x0,0x0,0x0],[0x0,0x0,0x0,0x0,0x0,0x0,0x0]],[[0x0,0x0,0x0,0x0,0x0,0x0,0x0],[0x0,0x0,0x0,0x0,0x0,0x0,0x0],[0x0,0x0,0x0,0x0,0x0,0x0,0x0],[0x0,0x0,0x0,0x0,0x0,0x0,0x0]],[[0x0,0x0,0x0,0x0,0x0,0x0,0x0],[0x0,0x0,0x0,0x0,0x0,0x0,0x0],[0x0,0x0,0x0,0x0,0x0,0x0,0x0],[0x0,0x0,0x0,0x0,0x0,0x0,0x0]]] |
| |
| #endif |
| |
| } |
| |