| 1 | # $Id: group,v 1.2 2004/04/04 19:04:11 mdw Exp $ |
| 2 | # |
| 3 | # Test group abstraction, and a bunch of other things. |
| 4 | |
| 5 | check { |
| 6 | "prime { 29, 7, 16 }" "ok"; |
| 7 | "prime { 29, 6, 5 }" "not a subgroup"; |
| 8 | "prime { 21, 2, 2 }" "p is not prime"; |
| 9 | "prime { 29, 14, 9 }" "group order not prime"; |
| 10 | |
| 11 | "ec { secp224r1 }" "ok"; |
| 12 | |
| 13 | "prime { catacomb-g1024 }" "ok"; |
| 14 | |
| 15 | "ec { |
| 16 | prime: |
| 17 | 0xdb7c2abf62e35e668076bead208b |
| 18 | primeproj: |
| 19 | 0xdb7c2abf62e35e668076bead2088, 0x659ef8ba043916eede8911702b22 |
| 20 | 0x09487239995a5ee76b55f9c2f098, 0xa89ce5af8724c0a23e0e0ff77500 |
| 21 | 0xdb7c2abf62e35e7628dfac6561c5 * 1 |
| 22 | }" "ok"; |
| 23 | |
| 24 | "ec { |
| 25 | prime: |
| 26 | 0xdb7c2abf62e35e668076bead208b |
| 27 | primeproj: |
| 28 | 0xdb7c2abf62e35e668076bead2088, 0x659ef8ba043916eede8911702b22 |
| 29 | 0x09487239995a5ee76b55f9c2f098, 0xa89ce5af8724c0a23e0e0ff77500 |
| 30 | 0xdb7c2abf62e35e7628dfac6561c5 * 2 |
| 31 | }" "incorrect cofactor"; |
| 32 | |
| 33 | # --- This one's oakley-155 --- |
| 34 | |
| 35 | "ec { |
| 36 | binpoly: 0x0800000000000000000000004000000000000001 |
| 37 | binproj: 0, 0x7338F |
| 38 | 0xaa089ae4666a422e714651ad9372213fa65a93, |
| 39 | 0x12d29c630dda76010397809a6816be6d2ffa815 |
| 40 | 0xaaaaaaaaaaaaaaaaaab1fcf1e206f421a3ea1b * 12 |
| 41 | }" "cofactor out of range"; |
| 42 | |
| 43 | } |
| 44 | |
| 45 | checkelt { |
| 46 | "prime { 29, 7, 16 }" 16 0; |
| 47 | "prime { 29, 7, 16 }" 2 -1; |
| 48 | |
| 49 | "ec { secp112r1 } " |
| 50 | "0x09487239995a5ee76b55f9c2f098, 0xa89ce5af8724c0a23e0e0ff77500" |
| 51 | 0; |
| 52 | |
| 53 | "ec { |
| 54 | binpoly: 0x0800000000000000000000004000000000000001 |
| 55 | binproj: 0, 0x7338F |
| 56 | 0xaa089ae4666a422e714651ad9372213fa65a93, |
| 57 | 0x12d29c630dda76010397809a6816be6d2ffa815 |
| 58 | 0xaaaaaaaaaaaaaaaaaab1fcf1e206f421a3ea1b * 12 |
| 59 | }" |
| 60 | "0x7b, 0x1c8" |
| 61 | -1; |
| 62 | |
| 63 | } |
| 64 | |
| 65 | mul { |
| 66 | "prime { 29, 7, 16 }" 8 7 27; |
| 67 | |
| 68 | "prime { catacomb-g512 }" |
| 69 | 3344609493517948819439808013094817124423784439045485500527919676470975342917009634212031124646834193243018749323077268170586751415510015906107400678608590 |
| 70 | 32459289443738057373904596685867555624839649360339363831766212033645755638497600605981483758068704145575847399920657057013890131443911836862688141735006 |
| 71 | 1926426135381827210395257472845875618319108487720857260583372274154852182951667715700282388176779441854588992736540698662997833538400244234146123792411051; |
| 72 | |
| 73 | "ec { nist-p192 }" |
| 74 | "0x188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012, |
| 75 | 0x07192b95ffc8da78631011ed6b24cdd573f977a11e794811" |
| 76 | "0xdafebf5828783f2ad35534631588a3f629a70fb16982a888, |
| 77 | 0xdd6bda0d993da0fa46b27bbc141b868f59331afa5c7e93ab" |
| 78 | "0x76e32a2557599e6edcd283201fb2b9aadfd0d359cbb263da, |
| 79 | 0x782c37e372ba4520aa62e0fed121d49ef3b543660cfd05fd"; |
| 80 | } |
| 81 | |
| 82 | sqr { |
| 83 | "prime { 29, 7, 16 }" 8 6; |
| 84 | |
| 85 | "prime { catacomb-g512 }" |
| 86 | 3344609493517948819439808013094817124423784439045485500527919676470975342917009634212031124646834193243018749323077268170586751415510015906107400678608590 |
| 87 | 4005285938812802884869056091732317348251189092239718246050415417461526884090403819686629744110427371766834314349639104763417430078158218519967583957470490; |
| 88 | |
| 89 | "ec { nist-p192 }" |
| 90 | "0x188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012, |
| 91 | 0x07192b95ffc8da78631011ed6b24cdd573f977a11e794811" |
| 92 | "0xdafebf5828783f2ad35534631588a3f629a70fb16982a888, |
| 93 | 0xdd6bda0d993da0fa46b27bbc141b868f59331afa5c7e93ab"; |
| 94 | } |
| 95 | |
| 96 | inv { |
| 97 | "prime { 29, 7, 16 }" 9 13; |
| 98 | |
| 99 | "prime { catacomb-g512 }" |
| 100 | 3344609493517948819439808013094817124423784439045485500527919676470975342917009634212031124646834193243018749323077268170586751415510015906107400678608590 |
| 101 | 4681416433015777166273237967077695060929667390767517698895765893629657943327105422863170288075976922965513789634412273770969873436435698540384711636714478; |
| 102 | |
| 103 | "ec { nist-p192 }" |
| 104 | "0x188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012, |
| 105 | 0x07192b95ffc8da78631011ed6b24cdd573f977a11e794811" |
| 106 | "0x188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012, |
| 107 | 0xf8e6d46a003725879cefee1294db32298c06885ee186b7ee"; |
| 108 | } |
| 109 | |
| 110 | div { |
| 111 | "prime { 29, 7, 16 }" 9 5 25; |
| 112 | |
| 113 | "prime { catacomb-g512 }" |
| 114 | 3344609493517948819439808013094817124423784439045485500527919676470975342917009634212031124646834193243018749323077268170586751415510015906107400678608590 |
| 115 | 1926426135381827210395257472845875618319108487720857260583372274154852182951667715700282388176779441854588992736540698662997833538400244234146123792411051 |
| 116 | 4352638698811548340197747445538844858722300429607827242718336069934302793791666196485760252202755936738278388907467170248315316920551773058188278017435713; |
| 117 | |
| 118 | "ec { nist-p192 }" |
| 119 | "0x76e32a2557599e6edcd283201fb2b9aadfd0d359cbb263da, |
| 120 | 0x782c37e372ba4520aa62e0fed121d49ef3b543660cfd05fd" |
| 121 | "0x188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012, |
| 122 | 0x07192b95ffc8da78631011ed6b24cdd573f977a11e794811" |
| 123 | "0xdafebf5828783f2ad35534631588a3f629a70fb16982a888, |
| 124 | 0xdd6bda0d993da0fa46b27bbc141b868f59331afa5c7e93ab"; |
| 125 | } |
| 126 | |
| 127 | exp { |
| 128 | "prime { 29, 7, 16 }" 3 12 16; |
| 129 | |
| 130 | "prime { 29, 7, 16 }" 3 -12 20; |
| 131 | |
| 132 | "prime { catacomb-g512 }" |
| 133 | 3344609493517948819439808013094817124423784439045485500527919676470975342917009634212031124646834193243018749323077268170586751415510015906107400678608590 |
| 134 | 147362842169670001895012880214773009850 |
| 135 | 2724858367444359999445242030177839616322236716074995568862882751673310120217819866527178352161554441906932468828696070184371718373894212895486594604883052; |
| 136 | |
| 137 | "prime { catacomb-g512 }" |
| 138 | 3344609493517948819439808013094817124423784439045485500527919676470975342917009634212031124646834193243018749323077268170586751415510015906107400678608590 |
| 139 | -147362842169670001895012880214773009850 |
| 140 | 1787060841912191849220487080420238350817474901097656088582267726968757275201342587344406900935515285588366012828182975089444331616359162696826008378664956; |
| 141 | |
| 142 | "ec { nist-p192 }" |
| 143 | "0x188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012, |
| 144 | 0x07192b95ffc8da78631011ed6b24cdd573f977a11e794811" |
| 145 | 6277101735386680763835789423176059013767194773182842284081 |
| 146 | inf; |
| 147 | |
| 148 | "ec { nist-p192 }" |
| 149 | "0x188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012, |
| 150 | 0x07192b95ffc8da78631011ed6b24cdd573f977a11e794811" |
| 151 | 3131675836296406071791252329528905062261497366991742517193 |
| 152 | "0x7f55059a125dd0d2b40dc3a712248b2848a5e5fa11111f71, |
| 153 | 0xc6e91094cb34131e539c3db25f7f32670ef8dfe03a88b6fb"; |
| 154 | |
| 155 | "ec { nist-p192 }" |
| 156 | "0x188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012, |
| 157 | 0x07192b95ffc8da78631011ed6b24cdd573f977a11e794811" |
| 158 | 3131675836296406071791252329528905062261497366991742517193 |
| 159 | "0x7f55059a125dd0d2b40dc3a712248b2848a5e5fa11111f71, |
| 160 | 0xc6e91094cb34131e539c3db25f7f32670ef8dfe03a88b6fb"; |
| 161 | |
| 162 | "ec { nist-p192 }" |
| 163 | "0x188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012, |
| 164 | 0x07192b95ffc8da78631011ed6b24cdd573f977a11e794811" |
| 165 | -3131675836296406071791252329528905062261497366991742517193 |
| 166 | "0x7f55059a125dd0d2b40dc3a712248b2848a5e5fa11111f71, |
| 167 | 0x3916ef6b34cbece1ac63c24da080cd97f107201fc5774904"; |
| 168 | } |
| 169 | |
| 170 | mexp-1 { |
| 171 | "prime { 29, 7, 16 }" 3 12 16; |
| 172 | "prime { 29, 7, 16 }" 3 -12 20; |
| 173 | |
| 174 | "ec { nist-p192 }" |
| 175 | "0x188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012, |
| 176 | 0x07192b95ffc8da78631011ed6b24cdd573f977a11e794811" |
| 177 | 3131675836296406071791252329528905062261497366991742517193 |
| 178 | "0x7f55059a125dd0d2b40dc3a712248b2848a5e5fa11111f71, |
| 179 | 0xc6e91094cb34131e539c3db25f7f32670ef8dfe03a88b6fb"; |
| 180 | |
| 181 | "ec { nist-p192 }" |
| 182 | "0x188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012, |
| 183 | 0x07192b95ffc8da78631011ed6b24cdd573f977a11e794811" |
| 184 | -3131675836296406071791252329528905062261497366991742517193 |
| 185 | "0x7f55059a125dd0d2b40dc3a712248b2848a5e5fa11111f71, |
| 186 | 0x3916ef6b34cbece1ac63c24da080cd97f107201fc5774904"; |
| 187 | } |
| 188 | |
| 189 | mexp-2 { |
| 190 | "prime { 29, 7, 16 }" 3 12 8 2 9; |
| 191 | "prime { 29, 7, 16 }" 3 -12 8 2 4; |
| 192 | |
| 193 | "prime { catacomb-g512 }" |
| 194 | 3344609493517948819439808013094817124423784439045485500527919676470975342917009634212031124646834193243018749323077268170586751415510015906107400678608590 |
| 195 | -147362842169670001895012880214773009850 |
| 196 | 130340428707563070626027539288099297037336608388990593367322442443880297841210613523501678207607756678300142264348927299637006055881968995671289567513600 |
| 197 | 91626412351157168611316239052073981423 |
| 198 | 1964042259347008051177500376636104488225042199152152977412099367647894431543835858678217073603604876847502133350210611462670145543437496436961938287223663; |
| 199 | |
| 200 | "ec { nist-p192 }" |
| 201 | "0x188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012, |
| 202 | 0x07192b95ffc8da78631011ed6b24cdd573f977a11e794811" |
| 203 | -3131675836296406071791252329528905062261497366991742517193 |
| 204 | "0xea711858c23d92f9964655910bc90a197a915e90111cf11b, |
| 205 | 0x664189a1d8b2bb24f2b2ac64b19e2178118842e6ba9f4ad5" |
| 206 | 1110875761630725856340142297645383444629395595869672555585 |
| 207 | "0xaa25bb0bf38b06821e8641c1afb8bc078dbe11c3cf9bc97, |
| 208 | 0xf1a4c09d621fb52736f6010ae90e9bc9771ac017a62098f9"; |
| 209 | } |
| 210 | |
| 211 | toint { |
| 212 | "prime { 29, 7, 16 }" 15 0 15; |
| 213 | "prime { 29, 7, 16 }" 0 0 0; |
| 214 | |
| 215 | "ec { nist-p192 }" inf -1 0; |
| 216 | |
| 217 | "ec { nist-p192 }" |
| 218 | "0x188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012, |
| 219 | 0x07192b95ffc8da78631011ed6b24cdd573f977a11e794811" |
| 220 | 0 602046282375688656758213480587526111916698976636884684818; |
| 221 | } |
| 222 | |
| 223 | fromint { |
| 224 | "prime { 29, 7, 16 }" 15 0 15; |
| 225 | "prime { 29, 7, 16 }" 0 0 0; |
| 226 | "prime { 29, 7, 16 }" 39527306161272833161358334459 0 19; |
| 227 | |
| 228 | "ec { nist-p192 }" 1 -1 inf; |
| 229 | "ec { nist-p192 }" 0 |
| 230 | 0 "0, 0x8497a9fa119ff34c9c24a156ed0d44a0c5f5d1f19fc9f0ed"; |
| 231 | } |
| 232 | |
| 233 | toec { |
| 234 | "prime { 29, 7, 16 }" 0 -1 inf; |
| 235 | "ec { nist-p192 }" inf 0 inf; |
| 236 | "ec { secp112r1 }" |
| 237 | "0x09487239995a5ee76b55f9c2f098, 0xa89ce5af8724c0a23e0e0ff77500" |
| 238 | 0 |
| 239 | "0x09487239995a5ee76b55f9c2f098, 0xa89ce5af8724c0a23e0e0ff77500"; |
| 240 | } |
| 241 | |
| 242 | fromec { |
| 243 | "prime { 29, 7, 16 }" inf -1 0; |
| 244 | "prime { 29, 7, 16 }" "39527306161272833161358334459, 9" 0 19; |
| 245 | |
| 246 | "ec { secp112r1 }" inf 0 inf; |
| 247 | "ec { nist-p192 }" "1, 5" -1 inf; |
| 248 | |
| 249 | "ec { secp112r1 }" |
| 250 | "0x09487239995a5ee76b55f9c2f098, 0xa89ce5af8724c0a23e0e0ff77500" |
| 251 | 0 |
| 252 | "0x09487239995a5ee76b55f9c2f098, 0xa89ce5af8724c0a23e0e0ff77500"; |
| 253 | } |
| 254 | |
| 255 | tobuf { |
| 256 | "prime { 29, 7, 16}" 22 -1 "00"; |
| 257 | "prime { 29, 7, 16}" 22 0 "000116"; |
| 258 | "prime { 29, 7, 16}" 0 -1 "0000"; |
| 259 | "prime { 29, 7, 16}" 0 0 "000100"; |
| 260 | |
| 261 | "ec { secp112r1 }" inf 0 "0000"; |
| 262 | "ec { secp112r1 }" |
| 263 | "0x09487239995a5ee76b55f9c2f098, 0xa89ce5af8724c0a23e0e0ff77500" |
| 264 | 0 "000e09487239995a5ee76b55f9c2f098000ea89ce5af8724c0a23e0e0ff77500"; |
| 265 | "ec { nist-p192 }" |
| 266 | "0, 0x8497a9fa119ff34c9c24a156ed0d44a0c5f5d1f19fc9f0ed" |
| 267 | 0 "00010000188497a9fa119ff34c9c24a156ed0d44a0c5f5d1f19fc9f0ed"; |
| 268 | } |
| 269 | |
| 270 | frombuf { |
| 271 | "prime { 29, 7, 16}" "00" -1 0; |
| 272 | "prime { 29, 7, 16}" "000116" 3 22; |
| 273 | "prime { 29, 7, 16}" "00000e" 2 0; |
| 274 | "prime { 29, 7, 16}" "000100ff" 3 0; |
| 275 | |
| 276 | "ec { secp112r1 }" "0000" 2 inf; |
| 277 | "ec { secp112r1 }" |
| 278 | "000e09487239995a5ee76b55f9c2f098000ea89ce5af8724c0a23e0e0ff77500f00d" |
| 279 | 32 "0x09487239995a5ee76b55f9c2f098, 0xa89ce5af8724c0a23e0e0ff77500"; |
| 280 | "ec { secp112r1 }" "0001000001001ee7" -1 inf; |
| 281 | "ec { nist-p192 }" |
| 282 | "00010000188497a9fa119ff34c9c24a156ed0d44a0c5f5d1f19fc9f0eddead" |
| 283 | 29, "0, 0x8497a9fa119ff34c9c24a156ed0d44a0c5f5d1f19fc9f0ed"; |
| 284 | } |
| 285 | |
| 286 | toraw { |
| 287 | "prime { 29, 7, 16}" 22 -1 ""; |
| 288 | "prime { 29, 7, 16}" 22 0 "16"; |
| 289 | "prime { 29, 7, 16}" 0 -1 ""; |
| 290 | "prime { 29, 7, 16}" 0 0 "00"; |
| 291 | "prime { 4294967311, 364289, 18767 }" 4285559121 0 "00ff707151"; |
| 292 | "prime { 4294967311, 364289, 18767 }" 4285559121 -1 "ff707151"; |
| 293 | |
| 294 | "ec { secp112r1 }" inf 0 "00"; |
| 295 | "ec { secp112r1 }" |
| 296 | "0x09487239995a5ee76b55f9c2f098, 0xa89ce5af8724c0a23e0e0ff77500" |
| 297 | 0 "0409487239995a5ee76b55f9c2f098a89ce5af8724c0a23e0e0ff77500"; |
| 298 | "ec { nist-p192 }" |
| 299 | "0, 0x8497a9fa119ff34c9c24a156ed0d44a0c5f5d1f19fc9f0ed" |
| 300 | 0 "040000000000000000000000000000000000000000000000008497a9fa119ff34c9c24a156ed0d44a0c5f5d1f19fc9f0ed"; |
| 301 | } |
| 302 | |
| 303 | fromraw { |
| 304 | "prime { 29, 7, 16}" "" -1 0; |
| 305 | "prime { 29, 7, 16}" "160bad" 1 22; |
| 306 | "prime { 29, 7, 16}" "00" 1 0; |
| 307 | "prime { 4294967311, 364289, 18767 }" "00ff707151e7c0" 5 4285559121; |
| 308 | "prime { 4294967311, 364289, 18767 }" "ff707151" -1 0; |
| 309 | |
| 310 | "ec { secp112r1 }" "" -1 inf; |
| 311 | "ec { secp112r1 }" "00" 1 inf; |
| 312 | "ec { secp112r1 }" |
| 313 | "0409487239995a5ee76b55f9c2f098a89ce5af8724c0a23e0e0ff775" -1 inf; |
| 314 | "ec { secp112r1 }" |
| 315 | "0409487239995a5ee76b55f9c2f098a89ce5af8724c0a23e0e0ff77500" |
| 316 | 29 "0x09487239995a5ee76b55f9c2f098, 0xa89ce5af8724c0a23e0e0ff77500"; |
| 317 | "ec { nist-p192 }" |
| 318 | "070000000000000000000000000000000000000000000000008497a9fa119ff34c9c24a156ed0d44a0c5f5d1f19fc9f0ed00deadbeef" |
| 319 | 49 "0, 0x8497a9fa119ff34c9c24a156ed0d44a0c5f5d1f19fc9f0ed"; |
| 320 | } |