bindings.rs
1 /* automatically generated by rust-bindgen 0.68.1 */ 2 3 pub type secret_word = usize; 4 pub type secret_bool = usize; 5 pub type byte = u8; 6 #[repr(C)] 7 #[repr(align(64))] 8 #[derive(Copy, Clone)] 9 pub struct ctt_sha256_context { 10 message_schedule: [u32; 16usize], 11 buf: [byte; 64usize], 12 msgLen: u64, 13 } 14 #[test] 15 fn bindgen_test_layout_ctt_sha256_context() { 16 const UNINIT: ::core::mem::MaybeUninit<ctt_sha256_context> = ::core::mem::MaybeUninit::uninit(); 17 let ptr = UNINIT.as_ptr(); 18 assert_eq!( 19 ::core::mem::size_of::<ctt_sha256_context>(), 20 192usize, 21 concat!("Size of: ", stringify!(ctt_sha256_context)) 22 ); 23 assert_eq!( 24 ::core::mem::align_of::<ctt_sha256_context>(), 25 64usize, 26 concat!("Alignment of ", stringify!(ctt_sha256_context)) 27 ); 28 assert_eq!( 29 unsafe { ::core::ptr::addr_of!((*ptr).message_schedule) as usize - ptr as usize }, 30 0usize, 31 concat!( 32 "Offset of field: ", 33 stringify!(ctt_sha256_context), 34 "::", 35 stringify!(message_schedule) 36 ) 37 ); 38 assert_eq!( 39 unsafe { ::core::ptr::addr_of!((*ptr).buf) as usize - ptr as usize }, 40 64usize, 41 concat!( 42 "Offset of field: ", 43 stringify!(ctt_sha256_context), 44 "::", 45 stringify!(buf) 46 ) 47 ); 48 assert_eq!( 49 unsafe { ::core::ptr::addr_of!((*ptr).msgLen) as usize - ptr as usize }, 50 128usize, 51 concat!( 52 "Offset of field: ", 53 stringify!(ctt_sha256_context), 54 "::", 55 stringify!(msgLen) 56 ) 57 ); 58 } 59 extern "C" { 60 #[doc = " Initialize or reinitialize a Sha256 context."] 61 pub fn ctt_sha256_init(ctx: *mut ctt_sha256_context); 62 } 63 extern "C" { 64 #[doc = " Append a message to a SHA256 context\n for incremental SHA256 computation\n\n Security note: the tail of your message might be stored\n in an internal buffer.\n if sensitive content is used, ensure that\n `ctx.finish(...)` and `ctx.clear()` are called as soon as possible.\n Additionally ensure that the message(s) passed were stored\n in memory considered secure for your threat model.\n\n For passwords and secret keys, you MUST NOT use raw SHA-256\n use a Key Derivation Function instead (KDF)"] 65 pub fn ctt_sha256_update( 66 ctx: *mut ctt_sha256_context, 67 message: *const byte, 68 message_len: isize, 69 ); 70 } 71 extern "C" { 72 #[doc = " Finalize a SHA256 computation and output the\n message digest to the `digest` buffer.\n\n Security note: this does not clear the internal buffer.\n if sensitive content is used, use \"ctx.clear()\"\n and also make sure that the message(s) passed were stored\n in memory considered secure for your threat model.\n\n For passwords and secret keys, you MUST NOT use raw SHA-256\n use a Key Derivation Function instead (KDF)"] 73 pub fn ctt_sha256_finish(ctx: *mut ctt_sha256_context, digest: *mut byte); 74 } 75 extern "C" { 76 #[doc = " Clear the context internal buffers\n Security note:\n For passwords and secret keys, you MUST NOT use raw SHA-256\n use a Key Derivation Function instead (KDF)"] 77 pub fn ctt_sha256_clear(ctx: *mut ctt_sha256_context); 78 } 79 extern "C" { 80 #[doc = " Compute the SHA-256 hash of message\n and store the result in digest.\n Optionally, clear the memory buffer used."] 81 pub fn ctt_sha256_hash( 82 digest: *mut byte, 83 message: *const byte, 84 message_len: isize, 85 clear_memory: bool, 86 ); 87 } 88 #[repr(C)] 89 #[derive(Copy, Clone)] 90 pub struct bls12_381_fr { 91 limbs: [secret_word; 4usize], 92 } 93 #[test] 94 fn bindgen_test_layout_bls12_381_fr() { 95 const UNINIT: ::core::mem::MaybeUninit<bls12_381_fr> = ::core::mem::MaybeUninit::uninit(); 96 let ptr = UNINIT.as_ptr(); 97 assert_eq!( 98 ::core::mem::size_of::<bls12_381_fr>(), 99 32usize, 100 concat!("Size of: ", stringify!(bls12_381_fr)) 101 ); 102 assert_eq!( 103 ::core::mem::align_of::<bls12_381_fr>(), 104 8usize, 105 concat!("Alignment of ", stringify!(bls12_381_fr)) 106 ); 107 assert_eq!( 108 unsafe { ::core::ptr::addr_of!((*ptr).limbs) as usize - ptr as usize }, 109 0usize, 110 concat!( 111 "Offset of field: ", 112 stringify!(bls12_381_fr), 113 "::", 114 stringify!(limbs) 115 ) 116 ); 117 } 118 #[repr(C)] 119 #[derive(Copy, Clone)] 120 pub struct bls12_381_fp { 121 limbs: [secret_word; 6usize], 122 } 123 #[test] 124 fn bindgen_test_layout_bls12_381_fp() { 125 const UNINIT: ::core::mem::MaybeUninit<bls12_381_fp> = ::core::mem::MaybeUninit::uninit(); 126 let ptr = UNINIT.as_ptr(); 127 assert_eq!( 128 ::core::mem::size_of::<bls12_381_fp>(), 129 48usize, 130 concat!("Size of: ", stringify!(bls12_381_fp)) 131 ); 132 assert_eq!( 133 ::core::mem::align_of::<bls12_381_fp>(), 134 8usize, 135 concat!("Alignment of ", stringify!(bls12_381_fp)) 136 ); 137 assert_eq!( 138 unsafe { ::core::ptr::addr_of!((*ptr).limbs) as usize - ptr as usize }, 139 0usize, 140 concat!( 141 "Offset of field: ", 142 stringify!(bls12_381_fp), 143 "::", 144 stringify!(limbs) 145 ) 146 ); 147 } 148 #[repr(C)] 149 #[derive(Copy, Clone)] 150 pub struct bls12_381_fp2 { 151 c: [bls12_381_fp; 2usize], 152 } 153 #[test] 154 fn bindgen_test_layout_bls12_381_fp2() { 155 const UNINIT: ::core::mem::MaybeUninit<bls12_381_fp2> = ::core::mem::MaybeUninit::uninit(); 156 let ptr = UNINIT.as_ptr(); 157 assert_eq!( 158 ::core::mem::size_of::<bls12_381_fp2>(), 159 96usize, 160 concat!("Size of: ", stringify!(bls12_381_fp2)) 161 ); 162 assert_eq!( 163 ::core::mem::align_of::<bls12_381_fp2>(), 164 8usize, 165 concat!("Alignment of ", stringify!(bls12_381_fp2)) 166 ); 167 assert_eq!( 168 unsafe { ::core::ptr::addr_of!((*ptr).c) as usize - ptr as usize }, 169 0usize, 170 concat!( 171 "Offset of field: ", 172 stringify!(bls12_381_fp2), 173 "::", 174 stringify!(c) 175 ) 176 ); 177 } 178 #[repr(C)] 179 #[derive(Copy, Clone)] 180 pub struct bls12_381_ec_g1_aff { 181 x: bls12_381_fp, 182 y: bls12_381_fp, 183 } 184 #[test] 185 fn bindgen_test_layout_bls12_381_ec_g1_aff() { 186 const UNINIT: ::core::mem::MaybeUninit<bls12_381_ec_g1_aff> = 187 ::core::mem::MaybeUninit::uninit(); 188 let ptr = UNINIT.as_ptr(); 189 assert_eq!( 190 ::core::mem::size_of::<bls12_381_ec_g1_aff>(), 191 96usize, 192 concat!("Size of: ", stringify!(bls12_381_ec_g1_aff)) 193 ); 194 assert_eq!( 195 ::core::mem::align_of::<bls12_381_ec_g1_aff>(), 196 8usize, 197 concat!("Alignment of ", stringify!(bls12_381_ec_g1_aff)) 198 ); 199 assert_eq!( 200 unsafe { ::core::ptr::addr_of!((*ptr).x) as usize - ptr as usize }, 201 0usize, 202 concat!( 203 "Offset of field: ", 204 stringify!(bls12_381_ec_g1_aff), 205 "::", 206 stringify!(x) 207 ) 208 ); 209 assert_eq!( 210 unsafe { ::core::ptr::addr_of!((*ptr).y) as usize - ptr as usize }, 211 48usize, 212 concat!( 213 "Offset of field: ", 214 stringify!(bls12_381_ec_g1_aff), 215 "::", 216 stringify!(y) 217 ) 218 ); 219 } 220 #[repr(C)] 221 #[derive(Copy, Clone)] 222 pub struct bls12_381_ec_g1_jac { 223 x: bls12_381_fp, 224 y: bls12_381_fp, 225 z: bls12_381_fp, 226 } 227 #[test] 228 fn bindgen_test_layout_bls12_381_ec_g1_jac() { 229 const UNINIT: ::core::mem::MaybeUninit<bls12_381_ec_g1_jac> = 230 ::core::mem::MaybeUninit::uninit(); 231 let ptr = UNINIT.as_ptr(); 232 assert_eq!( 233 ::core::mem::size_of::<bls12_381_ec_g1_jac>(), 234 144usize, 235 concat!("Size of: ", stringify!(bls12_381_ec_g1_jac)) 236 ); 237 assert_eq!( 238 ::core::mem::align_of::<bls12_381_ec_g1_jac>(), 239 8usize, 240 concat!("Alignment of ", stringify!(bls12_381_ec_g1_jac)) 241 ); 242 assert_eq!( 243 unsafe { ::core::ptr::addr_of!((*ptr).x) as usize - ptr as usize }, 244 0usize, 245 concat!( 246 "Offset of field: ", 247 stringify!(bls12_381_ec_g1_jac), 248 "::", 249 stringify!(x) 250 ) 251 ); 252 assert_eq!( 253 unsafe { ::core::ptr::addr_of!((*ptr).y) as usize - ptr as usize }, 254 48usize, 255 concat!( 256 "Offset of field: ", 257 stringify!(bls12_381_ec_g1_jac), 258 "::", 259 stringify!(y) 260 ) 261 ); 262 assert_eq!( 263 unsafe { ::core::ptr::addr_of!((*ptr).z) as usize - ptr as usize }, 264 96usize, 265 concat!( 266 "Offset of field: ", 267 stringify!(bls12_381_ec_g1_jac), 268 "::", 269 stringify!(z) 270 ) 271 ); 272 } 273 #[repr(C)] 274 #[derive(Copy, Clone)] 275 pub struct bls12_381_ec_g1_prj { 276 x: bls12_381_fp, 277 y: bls12_381_fp, 278 z: bls12_381_fp, 279 } 280 #[test] 281 fn bindgen_test_layout_bls12_381_ec_g1_prj() { 282 const UNINIT: ::core::mem::MaybeUninit<bls12_381_ec_g1_prj> = 283 ::core::mem::MaybeUninit::uninit(); 284 let ptr = UNINIT.as_ptr(); 285 assert_eq!( 286 ::core::mem::size_of::<bls12_381_ec_g1_prj>(), 287 144usize, 288 concat!("Size of: ", stringify!(bls12_381_ec_g1_prj)) 289 ); 290 assert_eq!( 291 ::core::mem::align_of::<bls12_381_ec_g1_prj>(), 292 8usize, 293 concat!("Alignment of ", stringify!(bls12_381_ec_g1_prj)) 294 ); 295 assert_eq!( 296 unsafe { ::core::ptr::addr_of!((*ptr).x) as usize - ptr as usize }, 297 0usize, 298 concat!( 299 "Offset of field: ", 300 stringify!(bls12_381_ec_g1_prj), 301 "::", 302 stringify!(x) 303 ) 304 ); 305 assert_eq!( 306 unsafe { ::core::ptr::addr_of!((*ptr).y) as usize - ptr as usize }, 307 48usize, 308 concat!( 309 "Offset of field: ", 310 stringify!(bls12_381_ec_g1_prj), 311 "::", 312 stringify!(y) 313 ) 314 ); 315 assert_eq!( 316 unsafe { ::core::ptr::addr_of!((*ptr).z) as usize - ptr as usize }, 317 96usize, 318 concat!( 319 "Offset of field: ", 320 stringify!(bls12_381_ec_g1_prj), 321 "::", 322 stringify!(z) 323 ) 324 ); 325 } 326 #[repr(C)] 327 #[derive(Copy, Clone)] 328 pub struct bls12_381_ec_g2_aff { 329 x: bls12_381_fp2, 330 y: bls12_381_fp2, 331 } 332 #[test] 333 fn bindgen_test_layout_bls12_381_ec_g2_aff() { 334 const UNINIT: ::core::mem::MaybeUninit<bls12_381_ec_g2_aff> = 335 ::core::mem::MaybeUninit::uninit(); 336 let ptr = UNINIT.as_ptr(); 337 assert_eq!( 338 ::core::mem::size_of::<bls12_381_ec_g2_aff>(), 339 192usize, 340 concat!("Size of: ", stringify!(bls12_381_ec_g2_aff)) 341 ); 342 assert_eq!( 343 ::core::mem::align_of::<bls12_381_ec_g2_aff>(), 344 8usize, 345 concat!("Alignment of ", stringify!(bls12_381_ec_g2_aff)) 346 ); 347 assert_eq!( 348 unsafe { ::core::ptr::addr_of!((*ptr).x) as usize - ptr as usize }, 349 0usize, 350 concat!( 351 "Offset of field: ", 352 stringify!(bls12_381_ec_g2_aff), 353 "::", 354 stringify!(x) 355 ) 356 ); 357 assert_eq!( 358 unsafe { ::core::ptr::addr_of!((*ptr).y) as usize - ptr as usize }, 359 96usize, 360 concat!( 361 "Offset of field: ", 362 stringify!(bls12_381_ec_g2_aff), 363 "::", 364 stringify!(y) 365 ) 366 ); 367 } 368 #[repr(C)] 369 #[derive(Copy, Clone)] 370 pub struct bls12_381_ec_g2_jac { 371 x: bls12_381_fp2, 372 y: bls12_381_fp2, 373 z: bls12_381_fp2, 374 } 375 #[test] 376 fn bindgen_test_layout_bls12_381_ec_g2_jac() { 377 const UNINIT: ::core::mem::MaybeUninit<bls12_381_ec_g2_jac> = 378 ::core::mem::MaybeUninit::uninit(); 379 let ptr = UNINIT.as_ptr(); 380 assert_eq!( 381 ::core::mem::size_of::<bls12_381_ec_g2_jac>(), 382 288usize, 383 concat!("Size of: ", stringify!(bls12_381_ec_g2_jac)) 384 ); 385 assert_eq!( 386 ::core::mem::align_of::<bls12_381_ec_g2_jac>(), 387 8usize, 388 concat!("Alignment of ", stringify!(bls12_381_ec_g2_jac)) 389 ); 390 assert_eq!( 391 unsafe { ::core::ptr::addr_of!((*ptr).x) as usize - ptr as usize }, 392 0usize, 393 concat!( 394 "Offset of field: ", 395 stringify!(bls12_381_ec_g2_jac), 396 "::", 397 stringify!(x) 398 ) 399 ); 400 assert_eq!( 401 unsafe { ::core::ptr::addr_of!((*ptr).y) as usize - ptr as usize }, 402 96usize, 403 concat!( 404 "Offset of field: ", 405 stringify!(bls12_381_ec_g2_jac), 406 "::", 407 stringify!(y) 408 ) 409 ); 410 assert_eq!( 411 unsafe { ::core::ptr::addr_of!((*ptr).z) as usize - ptr as usize }, 412 192usize, 413 concat!( 414 "Offset of field: ", 415 stringify!(bls12_381_ec_g2_jac), 416 "::", 417 stringify!(z) 418 ) 419 ); 420 } 421 #[repr(C)] 422 #[derive(Copy, Clone)] 423 pub struct bls12_381_ec_g2_prj { 424 x: bls12_381_fp2, 425 y: bls12_381_fp2, 426 z: bls12_381_fp2, 427 } 428 #[test] 429 fn bindgen_test_layout_bls12_381_ec_g2_prj() { 430 const UNINIT: ::core::mem::MaybeUninit<bls12_381_ec_g2_prj> = 431 ::core::mem::MaybeUninit::uninit(); 432 let ptr = UNINIT.as_ptr(); 433 assert_eq!( 434 ::core::mem::size_of::<bls12_381_ec_g2_prj>(), 435 288usize, 436 concat!("Size of: ", stringify!(bls12_381_ec_g2_prj)) 437 ); 438 assert_eq!( 439 ::core::mem::align_of::<bls12_381_ec_g2_prj>(), 440 8usize, 441 concat!("Alignment of ", stringify!(bls12_381_ec_g2_prj)) 442 ); 443 assert_eq!( 444 unsafe { ::core::ptr::addr_of!((*ptr).x) as usize - ptr as usize }, 445 0usize, 446 concat!( 447 "Offset of field: ", 448 stringify!(bls12_381_ec_g2_prj), 449 "::", 450 stringify!(x) 451 ) 452 ); 453 assert_eq!( 454 unsafe { ::core::ptr::addr_of!((*ptr).y) as usize - ptr as usize }, 455 96usize, 456 concat!( 457 "Offset of field: ", 458 stringify!(bls12_381_ec_g2_prj), 459 "::", 460 stringify!(y) 461 ) 462 ); 463 assert_eq!( 464 unsafe { ::core::ptr::addr_of!((*ptr).z) as usize - ptr as usize }, 465 192usize, 466 concat!( 467 "Offset of field: ", 468 stringify!(bls12_381_ec_g2_prj), 469 "::", 470 stringify!(z) 471 ) 472 ); 473 } 474 extern "C" { 475 #[must_use] 476 pub fn ctt_bls12_381_fr_unmarshalBE( 477 dst: *mut bls12_381_fr, 478 src: *const byte, 479 src_len: isize, 480 ) -> bool; 481 } 482 extern "C" { 483 #[must_use] 484 pub fn ctt_bls12_381_fr_marshalBE( 485 dst: *mut byte, 486 dst_len: isize, 487 src: *const bls12_381_fr, 488 ) -> bool; 489 } 490 extern "C" { 491 pub fn ctt_bls12_381_fr_is_eq(a: *const bls12_381_fr, b: *const bls12_381_fr) -> secret_bool; 492 } 493 extern "C" { 494 pub fn ctt_bls12_381_fr_is_zero(a: *const bls12_381_fr) -> secret_bool; 495 } 496 extern "C" { 497 pub fn ctt_bls12_381_fr_is_one(a: *const bls12_381_fr) -> secret_bool; 498 } 499 extern "C" { 500 pub fn ctt_bls12_381_fr_is_minus_one(a: *const bls12_381_fr) -> secret_bool; 501 } 502 extern "C" { 503 pub fn ctt_bls12_381_fr_set_zero(a: *mut bls12_381_fr); 504 } 505 extern "C" { 506 pub fn ctt_bls12_381_fr_set_one(a: *mut bls12_381_fr); 507 } 508 extern "C" { 509 pub fn ctt_bls12_381_fr_set_minus_one(a: *mut bls12_381_fr); 510 } 511 extern "C" { 512 pub fn ctt_bls12_381_fr_neg(r: *mut bls12_381_fr, a: *const bls12_381_fr); 513 } 514 extern "C" { 515 pub fn ctt_bls12_381_fr_neg_in_place(a: *mut bls12_381_fr); 516 } 517 extern "C" { 518 pub fn ctt_bls12_381_fr_sum( 519 r: *mut bls12_381_fr, 520 a: *const bls12_381_fr, 521 b: *const bls12_381_fr, 522 ); 523 } 524 extern "C" { 525 pub fn ctt_bls12_381_fr_add_in_place(a: *mut bls12_381_fr, b: *const bls12_381_fr); 526 } 527 extern "C" { 528 pub fn ctt_bls12_381_fr_diff( 529 r: *mut bls12_381_fr, 530 a: *const bls12_381_fr, 531 b: *const bls12_381_fr, 532 ); 533 } 534 extern "C" { 535 pub fn ctt_bls12_381_fr_sub_in_place(a: *mut bls12_381_fr, b: *const bls12_381_fr); 536 } 537 extern "C" { 538 pub fn ctt_bls12_381_fr_double(r: *mut bls12_381_fr, a: *const bls12_381_fr); 539 } 540 extern "C" { 541 pub fn ctt_bls12_381_fr_double_in_place(a: *mut bls12_381_fr); 542 } 543 extern "C" { 544 pub fn ctt_bls12_381_fr_prod( 545 r: *mut bls12_381_fr, 546 a: *const bls12_381_fr, 547 b: *const bls12_381_fr, 548 ); 549 } 550 extern "C" { 551 pub fn ctt_bls12_381_fr_mul_in_place(a: *mut bls12_381_fr, b: *const bls12_381_fr); 552 } 553 extern "C" { 554 pub fn ctt_bls12_381_fr_square(r: *mut bls12_381_fr, a: *const bls12_381_fr); 555 } 556 extern "C" { 557 pub fn ctt_bls12_381_fr_square_in_place(a: *mut bls12_381_fr); 558 } 559 extern "C" { 560 pub fn ctt_bls12_381_fr_div2(a: *mut bls12_381_fr); 561 } 562 extern "C" { 563 pub fn ctt_bls12_381_fr_inv(r: *mut bls12_381_fr, a: *const bls12_381_fr); 564 } 565 extern "C" { 566 pub fn ctt_bls12_381_fr_inv_in_place(a: *mut bls12_381_fr); 567 } 568 extern "C" { 569 pub fn ctt_bls12_381_fr_ccopy(a: *mut bls12_381_fr, b: *const bls12_381_fr, ctl: secret_bool); 570 } 571 extern "C" { 572 pub fn ctt_bls12_381_fr_cswap(a: *mut bls12_381_fr, b: *mut bls12_381_fr, ctl: secret_bool); 573 } 574 extern "C" { 575 pub fn ctt_bls12_381_fr_cset_zero(a: *mut bls12_381_fr, ctl: secret_bool); 576 } 577 extern "C" { 578 pub fn ctt_bls12_381_fr_cset_one(a: *mut bls12_381_fr, ctl: secret_bool); 579 } 580 extern "C" { 581 pub fn ctt_bls12_381_fr_cneg_in_place(a: *mut bls12_381_fr, ctl: secret_bool); 582 } 583 extern "C" { 584 pub fn ctt_bls12_381_fr_cadd_in_place( 585 a: *mut bls12_381_fr, 586 b: *const bls12_381_fr, 587 ctl: secret_bool, 588 ); 589 } 590 extern "C" { 591 pub fn ctt_bls12_381_fr_csub_in_place( 592 a: *mut bls12_381_fr, 593 b: *const bls12_381_fr, 594 ctl: secret_bool, 595 ); 596 } 597 extern "C" { 598 #[must_use] 599 pub fn ctt_bls12_381_fp_unmarshalBE( 600 dst: *mut bls12_381_fp, 601 src: *const byte, 602 src_len: isize, 603 ) -> bool; 604 } 605 extern "C" { 606 #[must_use] 607 pub fn ctt_bls12_381_fp_marshalBE( 608 dst: *mut byte, 609 dst_len: isize, 610 src: *const bls12_381_fp, 611 ) -> bool; 612 } 613 extern "C" { 614 pub fn ctt_bls12_381_fp_is_eq(a: *const bls12_381_fp, b: *const bls12_381_fp) -> secret_bool; 615 } 616 extern "C" { 617 pub fn ctt_bls12_381_fp_is_zero(a: *const bls12_381_fp) -> secret_bool; 618 } 619 extern "C" { 620 pub fn ctt_bls12_381_fp_is_one(a: *const bls12_381_fp) -> secret_bool; 621 } 622 extern "C" { 623 pub fn ctt_bls12_381_fp_is_minus_one(a: *const bls12_381_fp) -> secret_bool; 624 } 625 extern "C" { 626 pub fn ctt_bls12_381_fp_set_zero(a: *mut bls12_381_fp); 627 } 628 extern "C" { 629 pub fn ctt_bls12_381_fp_set_one(a: *mut bls12_381_fp); 630 } 631 extern "C" { 632 pub fn ctt_bls12_381_fp_set_minus_one(a: *mut bls12_381_fp); 633 } 634 extern "C" { 635 pub fn ctt_bls12_381_fp_neg(r: *mut bls12_381_fp, a: *const bls12_381_fp); 636 } 637 extern "C" { 638 pub fn ctt_bls12_381_fp_neg_in_place(a: *mut bls12_381_fp); 639 } 640 extern "C" { 641 pub fn ctt_bls12_381_fp_sum( 642 r: *mut bls12_381_fp, 643 a: *const bls12_381_fp, 644 b: *const bls12_381_fp, 645 ); 646 } 647 extern "C" { 648 pub fn ctt_bls12_381_fp_add_in_place(a: *mut bls12_381_fp, b: *const bls12_381_fp); 649 } 650 extern "C" { 651 pub fn ctt_bls12_381_fp_diff( 652 r: *mut bls12_381_fp, 653 a: *const bls12_381_fp, 654 b: *const bls12_381_fp, 655 ); 656 } 657 extern "C" { 658 pub fn ctt_bls12_381_fp_sub_in_place(a: *mut bls12_381_fp, b: *const bls12_381_fp); 659 } 660 extern "C" { 661 pub fn ctt_bls12_381_fp_double(r: *mut bls12_381_fp, a: *const bls12_381_fp); 662 } 663 extern "C" { 664 pub fn ctt_bls12_381_fp_double_in_place(a: *mut bls12_381_fp); 665 } 666 extern "C" { 667 pub fn ctt_bls12_381_fp_prod( 668 r: *mut bls12_381_fp, 669 a: *const bls12_381_fp, 670 b: *const bls12_381_fp, 671 ); 672 } 673 extern "C" { 674 pub fn ctt_bls12_381_fp_mul_in_place(a: *mut bls12_381_fp, b: *const bls12_381_fp); 675 } 676 extern "C" { 677 pub fn ctt_bls12_381_fp_square(r: *mut bls12_381_fp, a: *const bls12_381_fp); 678 } 679 extern "C" { 680 pub fn ctt_bls12_381_fp_square_in_place(a: *mut bls12_381_fp); 681 } 682 extern "C" { 683 pub fn ctt_bls12_381_fp_div2(a: *mut bls12_381_fp); 684 } 685 extern "C" { 686 pub fn ctt_bls12_381_fp_inv(r: *mut bls12_381_fp, a: *const bls12_381_fp); 687 } 688 extern "C" { 689 pub fn ctt_bls12_381_fp_inv_in_place(a: *mut bls12_381_fp); 690 } 691 extern "C" { 692 pub fn ctt_bls12_381_fp_ccopy(a: *mut bls12_381_fp, b: *const bls12_381_fp, ctl: secret_bool); 693 } 694 extern "C" { 695 pub fn ctt_bls12_381_fp_cswap(a: *mut bls12_381_fp, b: *mut bls12_381_fp, ctl: secret_bool); 696 } 697 extern "C" { 698 pub fn ctt_bls12_381_fp_cset_zero(a: *mut bls12_381_fp, ctl: secret_bool); 699 } 700 extern "C" { 701 pub fn ctt_bls12_381_fp_cset_one(a: *mut bls12_381_fp, ctl: secret_bool); 702 } 703 extern "C" { 704 pub fn ctt_bls12_381_fp_cneg_in_place(a: *mut bls12_381_fp, ctl: secret_bool); 705 } 706 extern "C" { 707 pub fn ctt_bls12_381_fp_cadd_in_place( 708 a: *mut bls12_381_fp, 709 b: *const bls12_381_fp, 710 ctl: secret_bool, 711 ); 712 } 713 extern "C" { 714 pub fn ctt_bls12_381_fp_csub_in_place( 715 a: *mut bls12_381_fp, 716 b: *const bls12_381_fp, 717 ctl: secret_bool, 718 ); 719 } 720 extern "C" { 721 pub fn ctt_bls12_381_fp_is_square(a: *const bls12_381_fp) -> secret_bool; 722 } 723 extern "C" { 724 pub fn ctt_bls12_381_fp_invsqrt(r: *mut bls12_381_fp, a: *const bls12_381_fp); 725 } 726 extern "C" { 727 pub fn ctt_bls12_381_fp_invsqrt_in_place( 728 r: *mut bls12_381_fp, 729 a: *const bls12_381_fp, 730 ) -> secret_bool; 731 } 732 extern "C" { 733 pub fn ctt_bls12_381_fp_sqrt_in_place(a: *mut bls12_381_fp); 734 } 735 extern "C" { 736 pub fn ctt_bls12_381_fp_sqrt_if_square_in_place(a: *mut bls12_381_fp) -> secret_bool; 737 } 738 extern "C" { 739 pub fn ctt_bls12_381_fp_sqrt_invsqrt( 740 sqrt: *mut bls12_381_fp, 741 invsqrt: *mut bls12_381_fp, 742 a: *const bls12_381_fp, 743 ); 744 } 745 extern "C" { 746 pub fn ctt_bls12_381_fp_sqrt_invsqrt_if_square( 747 sqrt: *mut bls12_381_fp, 748 invsqrt: *mut bls12_381_fp, 749 a: *const bls12_381_fp, 750 ) -> secret_bool; 751 } 752 extern "C" { 753 pub fn ctt_bls12_381_fp_sqrt_ratio_if_square( 754 r: *mut bls12_381_fp, 755 u: *const bls12_381_fp, 756 v: *const bls12_381_fp, 757 ) -> secret_bool; 758 } 759 extern "C" { 760 pub fn ctt_bls12_381_fp2_is_eq(a: *const bls12_381_fp2, b: *const bls12_381_fp2) 761 -> secret_bool; 762 } 763 extern "C" { 764 pub fn ctt_bls12_381_fp2_is_zero(a: *const bls12_381_fp2) -> secret_bool; 765 } 766 extern "C" { 767 pub fn ctt_bls12_381_fp2_is_one(a: *const bls12_381_fp2) -> secret_bool; 768 } 769 extern "C" { 770 pub fn ctt_bls12_381_fp2_is_minus_one(a: *const bls12_381_fp2) -> secret_bool; 771 } 772 extern "C" { 773 pub fn ctt_bls12_381_fp2_set_zero(a: *mut bls12_381_fp2); 774 } 775 extern "C" { 776 pub fn ctt_bls12_381_fp2_set_one(a: *mut bls12_381_fp2); 777 } 778 extern "C" { 779 pub fn ctt_bls12_381_fp2_set_minus_one(a: *mut bls12_381_fp2); 780 } 781 extern "C" { 782 pub fn ctt_bls12_381_fp2_neg(a: *mut bls12_381_fp2); 783 } 784 extern "C" { 785 pub fn ctt_bls12_381_fp2_sum( 786 r: *mut bls12_381_fp2, 787 a: *const bls12_381_fp2, 788 b: *const bls12_381_fp2, 789 ); 790 } 791 extern "C" { 792 pub fn ctt_bls12_381_fp2_add_in_place(a: *mut bls12_381_fp2, b: *const bls12_381_fp2); 793 } 794 extern "C" { 795 pub fn ctt_bls12_381_fp2_diff( 796 r: *mut bls12_381_fp2, 797 a: *const bls12_381_fp2, 798 b: *const bls12_381_fp2, 799 ); 800 } 801 extern "C" { 802 pub fn ctt_bls12_381_fp2_sub_in_place(a: *mut bls12_381_fp2, b: *const bls12_381_fp2); 803 } 804 extern "C" { 805 pub fn ctt_bls12_381_fp2_double(r: *mut bls12_381_fp2, a: *const bls12_381_fp2); 806 } 807 extern "C" { 808 pub fn ctt_bls12_381_fp2_double_in_place(a: *mut bls12_381_fp2); 809 } 810 extern "C" { 811 pub fn ctt_bls12_381_fp2_conj(r: *mut bls12_381_fp2, a: *const bls12_381_fp2); 812 } 813 extern "C" { 814 pub fn ctt_bls12_381_fp2_conj_in_place(a: *mut bls12_381_fp2); 815 } 816 extern "C" { 817 pub fn ctt_bls12_381_fp2_conjneg(r: *mut bls12_381_fp2, a: *const bls12_381_fp2); 818 } 819 extern "C" { 820 pub fn ctt_bls12_381_fp2_conjneg_in_place(a: *mut bls12_381_fp2); 821 } 822 extern "C" { 823 pub fn ctt_bls12_381_fp2_prod( 824 r: *mut bls12_381_fp2, 825 a: *const bls12_381_fp2, 826 b: *const bls12_381_fp2, 827 ); 828 } 829 extern "C" { 830 pub fn ctt_bls12_381_fp2_mul_in_place(a: *mut bls12_381_fp2, b: *const bls12_381_fp2); 831 } 832 extern "C" { 833 pub fn ctt_bls12_381_fp2_square(r: *mut bls12_381_fp2, a: *const bls12_381_fp2); 834 } 835 extern "C" { 836 pub fn ctt_bls12_381_fp2_square_in_place(a: *mut bls12_381_fp2); 837 } 838 extern "C" { 839 pub fn ctt_bls12_381_fp2_div2(a: *mut bls12_381_fp2); 840 } 841 extern "C" { 842 pub fn ctt_bls12_381_fp2_inv(r: *mut bls12_381_fp2, a: *const bls12_381_fp2); 843 } 844 extern "C" { 845 pub fn ctt_bls12_381_fp2_inv_in_place(a: *mut bls12_381_fp2); 846 } 847 extern "C" { 848 pub fn ctt_bls12_381_fp2_ccopy( 849 a: *mut bls12_381_fp2, 850 b: *const bls12_381_fp2, 851 ctl: secret_bool, 852 ); 853 } 854 extern "C" { 855 pub fn ctt_bls12_381_fp2_cset_zero(a: *mut bls12_381_fp2, ctl: secret_bool); 856 } 857 extern "C" { 858 pub fn ctt_bls12_381_fp2_cset_one(a: *mut bls12_381_fp2, ctl: secret_bool); 859 } 860 extern "C" { 861 pub fn ctt_bls12_381_fp2_cneg_in_place(a: *mut bls12_381_fp2, ctl: secret_bool); 862 } 863 extern "C" { 864 pub fn ctt_bls12_381_fp2_cadd_in_place( 865 a: *mut bls12_381_fp2, 866 b: *const bls12_381_fp2, 867 ctl: secret_bool, 868 ); 869 } 870 extern "C" { 871 pub fn ctt_bls12_381_fp2_csub_in_place( 872 a: *mut bls12_381_fp2, 873 b: *const bls12_381_fp2, 874 ctl: secret_bool, 875 ); 876 } 877 extern "C" { 878 pub fn ctt_bls12_381_fp2_is_square(a: *const bls12_381_fp2) -> secret_bool; 879 } 880 extern "C" { 881 pub fn ctt_bls12_381_fp2_sqrt_in_place(a: *mut bls12_381_fp2); 882 } 883 extern "C" { 884 pub fn ctt_bls12_381_fp2_sqrt_if_square_in_place(a: *mut bls12_381_fp2) -> secret_bool; 885 } 886 extern "C" { 887 pub fn ctt_bls12_381_ec_g1_aff_is_eq( 888 P: *const bls12_381_ec_g1_aff, 889 Q: *const bls12_381_ec_g1_aff, 890 ) -> secret_bool; 891 } 892 extern "C" { 893 pub fn ctt_bls12_381_ec_g1_aff_is_inf(P: *const bls12_381_ec_g1_aff) -> secret_bool; 894 } 895 extern "C" { 896 pub fn ctt_bls12_381_ec_g1_aff_set_inf(P: *mut bls12_381_ec_g1_aff); 897 } 898 extern "C" { 899 pub fn ctt_bls12_381_ec_g1_aff_ccopy( 900 P: *mut bls12_381_ec_g1_aff, 901 Q: *const bls12_381_ec_g1_aff, 902 ctl: secret_bool, 903 ); 904 } 905 extern "C" { 906 pub fn ctt_bls12_381_ec_g1_aff_is_on_curve( 907 x: *const bls12_381_fp, 908 y: *const bls12_381_fp, 909 ) -> secret_bool; 910 } 911 extern "C" { 912 pub fn ctt_bls12_381_ec_g1_aff_neg(P: *mut bls12_381_ec_g1_aff, Q: *const bls12_381_ec_g1_aff); 913 } 914 extern "C" { 915 pub fn ctt_bls12_381_ec_g1_aff_neg_in_place(P: *mut bls12_381_ec_g1_aff); 916 } 917 extern "C" { 918 pub fn ctt_bls12_381_ec_g1_jac_is_eq( 919 P: *const bls12_381_ec_g1_jac, 920 Q: *const bls12_381_ec_g1_jac, 921 ) -> secret_bool; 922 } 923 extern "C" { 924 pub fn ctt_bls12_381_ec_g1_jac_is_inf(P: *const bls12_381_ec_g1_jac) -> secret_bool; 925 } 926 extern "C" { 927 pub fn ctt_bls12_381_ec_g1_jac_set_inf(P: *mut bls12_381_ec_g1_jac); 928 } 929 extern "C" { 930 pub fn ctt_bls12_381_ec_g1_jac_ccopy( 931 P: *mut bls12_381_ec_g1_jac, 932 Q: *const bls12_381_ec_g1_jac, 933 ctl: secret_bool, 934 ); 935 } 936 extern "C" { 937 pub fn ctt_bls12_381_ec_g1_jac_neg(P: *mut bls12_381_ec_g1_jac, Q: *const bls12_381_ec_g1_jac); 938 } 939 extern "C" { 940 pub fn ctt_bls12_381_ec_g1_jac_neg_in_place(P: *mut bls12_381_ec_g1_jac); 941 } 942 extern "C" { 943 pub fn ctt_bls12_381_ec_g1_jac_cneg_in_place(P: *mut bls12_381_ec_g1_jac, ctl: secret_bool); 944 } 945 extern "C" { 946 pub fn ctt_bls12_381_ec_g1_jac_sum( 947 r: *mut bls12_381_ec_g1_jac, 948 P: *const bls12_381_ec_g1_jac, 949 Q: *const bls12_381_ec_g1_jac, 950 ); 951 } 952 extern "C" { 953 pub fn ctt_bls12_381_ec_g1_jac_add_in_place( 954 P: *mut bls12_381_ec_g1_jac, 955 Q: *const bls12_381_ec_g1_jac, 956 ); 957 } 958 extern "C" { 959 pub fn ctt_bls12_381_ec_g1_jac_diff( 960 r: *mut bls12_381_ec_g1_jac, 961 P: *const bls12_381_ec_g1_jac, 962 Q: *const bls12_381_ec_g1_jac, 963 ); 964 } 965 extern "C" { 966 pub fn ctt_bls12_381_ec_g1_jac_double( 967 r: *mut bls12_381_ec_g1_jac, 968 P: *const bls12_381_ec_g1_jac, 969 ); 970 } 971 extern "C" { 972 pub fn ctt_bls12_381_ec_g1_jac_double_in_place(P: *mut bls12_381_ec_g1_jac); 973 } 974 extern "C" { 975 pub fn ctt_bls12_381_ec_g1_jac_affine( 976 dst: *mut bls12_381_ec_g1_aff, 977 src: *const bls12_381_ec_g1_jac, 978 ); 979 } 980 extern "C" { 981 pub fn ctt_bls12_381_ec_g1_jac_from_affine( 982 dst: *mut bls12_381_ec_g1_jac, 983 src: *const bls12_381_ec_g1_aff, 984 ); 985 } 986 extern "C" { 987 pub fn ctt_bls12_381_ec_g1_prj_is_eq( 988 P: *const bls12_381_ec_g1_prj, 989 Q: *const bls12_381_ec_g1_prj, 990 ) -> secret_bool; 991 } 992 extern "C" { 993 pub fn ctt_bls12_381_ec_g1_prj_is_inf(P: *const bls12_381_ec_g1_prj) -> secret_bool; 994 } 995 extern "C" { 996 pub fn ctt_bls12_381_ec_g1_prj_set_inf(P: *mut bls12_381_ec_g1_prj); 997 } 998 extern "C" { 999 pub fn ctt_bls12_381_ec_g1_prj_ccopy( 1000 P: *mut bls12_381_ec_g1_prj, 1001 Q: *const bls12_381_ec_g1_prj, 1002 ctl: secret_bool, 1003 ); 1004 } 1005 extern "C" { 1006 pub fn ctt_bls12_381_ec_g1_prj_neg(P: *mut bls12_381_ec_g1_prj, Q: *const bls12_381_ec_g1_prj); 1007 } 1008 extern "C" { 1009 pub fn ctt_bls12_381_ec_g1_prj_neg_in_place(P: *mut bls12_381_ec_g1_prj); 1010 } 1011 extern "C" { 1012 pub fn ctt_bls12_381_ec_g1_prj_cneg_in_place(P: *mut bls12_381_ec_g1_prj, ctl: secret_bool); 1013 } 1014 extern "C" { 1015 pub fn ctt_bls12_381_ec_g1_prj_sum( 1016 r: *mut bls12_381_ec_g1_prj, 1017 P: *const bls12_381_ec_g1_prj, 1018 Q: *const bls12_381_ec_g1_prj, 1019 ); 1020 } 1021 extern "C" { 1022 pub fn ctt_bls12_381_ec_g1_prj_add_in_place( 1023 P: *mut bls12_381_ec_g1_prj, 1024 Q: *const bls12_381_ec_g1_prj, 1025 ); 1026 } 1027 extern "C" { 1028 pub fn ctt_bls12_381_ec_g1_prj_diff( 1029 r: *mut bls12_381_ec_g1_prj, 1030 P: *const bls12_381_ec_g1_prj, 1031 Q: *const bls12_381_ec_g1_prj, 1032 ); 1033 } 1034 extern "C" { 1035 pub fn ctt_bls12_381_ec_g1_prj_double( 1036 r: *mut bls12_381_ec_g1_prj, 1037 P: *const bls12_381_ec_g1_prj, 1038 ); 1039 } 1040 extern "C" { 1041 pub fn ctt_bls12_381_ec_g1_prj_double_in_place(P: *mut bls12_381_ec_g1_prj); 1042 } 1043 extern "C" { 1044 pub fn ctt_bls12_381_ec_g1_prj_affine( 1045 dst: *mut bls12_381_ec_g1_aff, 1046 src: *const bls12_381_ec_g1_prj, 1047 ); 1048 } 1049 extern "C" { 1050 pub fn ctt_bls12_381_ec_g1_prj_from_affine( 1051 dst: *mut bls12_381_ec_g1_prj, 1052 src: *const bls12_381_ec_g1_aff, 1053 ); 1054 } 1055 extern "C" { 1056 pub fn ctt_bls12_381_ec_g2_aff_is_eq( 1057 P: *const bls12_381_ec_g2_aff, 1058 Q: *const bls12_381_ec_g2_aff, 1059 ) -> secret_bool; 1060 } 1061 extern "C" { 1062 pub fn ctt_bls12_381_ec_g2_aff_is_inf(P: *const bls12_381_ec_g2_aff) -> secret_bool; 1063 } 1064 extern "C" { 1065 pub fn ctt_bls12_381_ec_g2_aff_set_inf(P: *mut bls12_381_ec_g2_aff); 1066 } 1067 extern "C" { 1068 pub fn ctt_bls12_381_ec_g2_aff_ccopy( 1069 P: *mut bls12_381_ec_g2_aff, 1070 Q: *const bls12_381_ec_g2_aff, 1071 ctl: secret_bool, 1072 ); 1073 } 1074 extern "C" { 1075 pub fn ctt_bls12_381_ec_g2_aff_is_on_curve( 1076 x: *const bls12_381_fp2, 1077 y: *const bls12_381_fp2, 1078 ) -> secret_bool; 1079 } 1080 extern "C" { 1081 pub fn ctt_bls12_381_ec_g2_aff_neg(P: *mut bls12_381_ec_g2_aff, Q: *const bls12_381_ec_g2_aff); 1082 } 1083 extern "C" { 1084 pub fn ctt_bls12_381_ec_g2_aff_neg_in_place(P: *mut bls12_381_ec_g2_aff); 1085 } 1086 extern "C" { 1087 pub fn ctt_bls12_381_ec_g2_jac_is_eq( 1088 P: *const bls12_381_ec_g2_jac, 1089 Q: *const bls12_381_ec_g2_jac, 1090 ) -> secret_bool; 1091 } 1092 extern "C" { 1093 pub fn ctt_bls12_381_ec_g2_jac_is_inf(P: *const bls12_381_ec_g2_jac) -> secret_bool; 1094 } 1095 extern "C" { 1096 pub fn ctt_bls12_381_ec_g2_jac_set_inf(P: *mut bls12_381_ec_g2_jac); 1097 } 1098 extern "C" { 1099 pub fn ctt_bls12_381_ec_g2_jac_ccopy( 1100 P: *mut bls12_381_ec_g2_jac, 1101 Q: *const bls12_381_ec_g2_jac, 1102 ctl: secret_bool, 1103 ); 1104 } 1105 extern "C" { 1106 pub fn ctt_bls12_381_ec_g2_jac_neg(P: *mut bls12_381_ec_g2_jac, Q: *const bls12_381_ec_g2_jac); 1107 } 1108 extern "C" { 1109 pub fn ctt_bls12_381_ec_g2_jac_neg_in_place(P: *mut bls12_381_ec_g2_jac); 1110 } 1111 extern "C" { 1112 pub fn ctt_bls12_381_ec_g2_jac_cneg_in_place(P: *mut bls12_381_ec_g2_jac, ctl: secret_bool); 1113 } 1114 extern "C" { 1115 pub fn ctt_bls12_381_ec_g2_jac_sum( 1116 r: *mut bls12_381_ec_g2_jac, 1117 P: *const bls12_381_ec_g2_jac, 1118 Q: *const bls12_381_ec_g2_jac, 1119 ); 1120 } 1121 extern "C" { 1122 pub fn ctt_bls12_381_ec_g2_jac_add_in_place( 1123 P: *mut bls12_381_ec_g2_jac, 1124 Q: *const bls12_381_ec_g2_jac, 1125 ); 1126 } 1127 extern "C" { 1128 pub fn ctt_bls12_381_ec_g2_jac_diff( 1129 r: *mut bls12_381_ec_g2_jac, 1130 P: *const bls12_381_ec_g2_jac, 1131 Q: *const bls12_381_ec_g2_jac, 1132 ); 1133 } 1134 extern "C" { 1135 pub fn ctt_bls12_381_ec_g2_jac_double( 1136 r: *mut bls12_381_ec_g2_jac, 1137 P: *const bls12_381_ec_g2_jac, 1138 ); 1139 } 1140 extern "C" { 1141 pub fn ctt_bls12_381_ec_g2_jac_double_in_place(P: *mut bls12_381_ec_g2_jac); 1142 } 1143 extern "C" { 1144 pub fn ctt_bls12_381_ec_g2_jac_affine( 1145 dst: *mut bls12_381_ec_g2_aff, 1146 src: *const bls12_381_ec_g2_jac, 1147 ); 1148 } 1149 extern "C" { 1150 pub fn ctt_bls12_381_ec_g2_jac_from_affine( 1151 dst: *mut bls12_381_ec_g2_jac, 1152 src: *const bls12_381_ec_g2_aff, 1153 ); 1154 } 1155 extern "C" { 1156 pub fn ctt_bls12_381_ec_g2_prj_is_eq( 1157 P: *const bls12_381_ec_g2_prj, 1158 Q: *const bls12_381_ec_g2_prj, 1159 ) -> secret_bool; 1160 } 1161 extern "C" { 1162 pub fn ctt_bls12_381_ec_g2_prj_is_inf(P: *const bls12_381_ec_g2_prj) -> secret_bool; 1163 } 1164 extern "C" { 1165 pub fn ctt_bls12_381_ec_g2_prj_set_inf(P: *mut bls12_381_ec_g2_prj); 1166 } 1167 extern "C" { 1168 pub fn ctt_bls12_381_ec_g2_prj_ccopy( 1169 P: *mut bls12_381_ec_g2_prj, 1170 Q: *const bls12_381_ec_g2_prj, 1171 ctl: secret_bool, 1172 ); 1173 } 1174 extern "C" { 1175 pub fn ctt_bls12_381_ec_g2_prj_neg(P: *mut bls12_381_ec_g2_prj, Q: *const bls12_381_ec_g2_prj); 1176 } 1177 extern "C" { 1178 pub fn ctt_bls12_381_ec_g2_prj_neg_in_place(P: *mut bls12_381_ec_g2_prj); 1179 } 1180 extern "C" { 1181 pub fn ctt_bls12_381_ec_g2_prj_cneg_in_place(P: *mut bls12_381_ec_g2_prj, ctl: secret_bool); 1182 } 1183 extern "C" { 1184 pub fn ctt_bls12_381_ec_g2_prj_sum( 1185 r: *mut bls12_381_ec_g2_prj, 1186 P: *const bls12_381_ec_g2_prj, 1187 Q: *const bls12_381_ec_g2_prj, 1188 ); 1189 } 1190 extern "C" { 1191 pub fn ctt_bls12_381_ec_g2_prj_add_in_place( 1192 P: *mut bls12_381_ec_g2_prj, 1193 Q: *const bls12_381_ec_g2_prj, 1194 ); 1195 } 1196 extern "C" { 1197 pub fn ctt_bls12_381_ec_g2_prj_diff( 1198 r: *mut bls12_381_ec_g2_prj, 1199 P: *const bls12_381_ec_g2_prj, 1200 Q: *const bls12_381_ec_g2_prj, 1201 ); 1202 } 1203 extern "C" { 1204 pub fn ctt_bls12_381_ec_g2_prj_double( 1205 r: *mut bls12_381_ec_g2_prj, 1206 P: *const bls12_381_ec_g2_prj, 1207 ); 1208 } 1209 extern "C" { 1210 pub fn ctt_bls12_381_ec_g2_prj_double_in_place(P: *mut bls12_381_ec_g2_prj); 1211 } 1212 extern "C" { 1213 pub fn ctt_bls12_381_ec_g2_prj_affine( 1214 dst: *mut bls12_381_ec_g2_aff, 1215 src: *const bls12_381_ec_g2_prj, 1216 ); 1217 } 1218 extern "C" { 1219 pub fn ctt_bls12_381_ec_g2_prj_from_affine( 1220 dst: *mut bls12_381_ec_g2_prj, 1221 src: *const bls12_381_ec_g2_aff, 1222 ); 1223 } 1224 #[repr(C)] 1225 #[derive(Copy, Clone)] 1226 pub struct bn254_snarks_fr { 1227 limbs: [secret_word; 4usize], 1228 } 1229 #[test] 1230 fn bindgen_test_layout_bn254_snarks_fr() { 1231 const UNINIT: ::core::mem::MaybeUninit<bn254_snarks_fr> = ::core::mem::MaybeUninit::uninit(); 1232 let ptr = UNINIT.as_ptr(); 1233 assert_eq!( 1234 ::core::mem::size_of::<bn254_snarks_fr>(), 1235 32usize, 1236 concat!("Size of: ", stringify!(bn254_snarks_fr)) 1237 ); 1238 assert_eq!( 1239 ::core::mem::align_of::<bn254_snarks_fr>(), 1240 8usize, 1241 concat!("Alignment of ", stringify!(bn254_snarks_fr)) 1242 ); 1243 assert_eq!( 1244 unsafe { ::core::ptr::addr_of!((*ptr).limbs) as usize - ptr as usize }, 1245 0usize, 1246 concat!( 1247 "Offset of field: ", 1248 stringify!(bn254_snarks_fr), 1249 "::", 1250 stringify!(limbs) 1251 ) 1252 ); 1253 } 1254 #[repr(C)] 1255 #[derive(Copy, Clone)] 1256 pub struct bn254_snarks_fp { 1257 limbs: [secret_word; 4usize], 1258 } 1259 #[test] 1260 fn bindgen_test_layout_bn254_snarks_fp() { 1261 const UNINIT: ::core::mem::MaybeUninit<bn254_snarks_fp> = ::core::mem::MaybeUninit::uninit(); 1262 let ptr = UNINIT.as_ptr(); 1263 assert_eq!( 1264 ::core::mem::size_of::<bn254_snarks_fp>(), 1265 32usize, 1266 concat!("Size of: ", stringify!(bn254_snarks_fp)) 1267 ); 1268 assert_eq!( 1269 ::core::mem::align_of::<bn254_snarks_fp>(), 1270 8usize, 1271 concat!("Alignment of ", stringify!(bn254_snarks_fp)) 1272 ); 1273 assert_eq!( 1274 unsafe { ::core::ptr::addr_of!((*ptr).limbs) as usize - ptr as usize }, 1275 0usize, 1276 concat!( 1277 "Offset of field: ", 1278 stringify!(bn254_snarks_fp), 1279 "::", 1280 stringify!(limbs) 1281 ) 1282 ); 1283 } 1284 #[repr(C)] 1285 #[derive(Copy, Clone)] 1286 pub struct bn254_snarks_fp2 { 1287 c: [bn254_snarks_fp; 2usize], 1288 } 1289 #[test] 1290 fn bindgen_test_layout_bn254_snarks_fp2() { 1291 const UNINIT: ::core::mem::MaybeUninit<bn254_snarks_fp2> = ::core::mem::MaybeUninit::uninit(); 1292 let ptr = UNINIT.as_ptr(); 1293 assert_eq!( 1294 ::core::mem::size_of::<bn254_snarks_fp2>(), 1295 64usize, 1296 concat!("Size of: ", stringify!(bn254_snarks_fp2)) 1297 ); 1298 assert_eq!( 1299 ::core::mem::align_of::<bn254_snarks_fp2>(), 1300 8usize, 1301 concat!("Alignment of ", stringify!(bn254_snarks_fp2)) 1302 ); 1303 assert_eq!( 1304 unsafe { ::core::ptr::addr_of!((*ptr).c) as usize - ptr as usize }, 1305 0usize, 1306 concat!( 1307 "Offset of field: ", 1308 stringify!(bn254_snarks_fp2), 1309 "::", 1310 stringify!(c) 1311 ) 1312 ); 1313 } 1314 #[repr(C)] 1315 #[derive(Copy, Clone)] 1316 pub struct bn254_snarks_ec_g1_aff { 1317 x: bn254_snarks_fp, 1318 y: bn254_snarks_fp, 1319 } 1320 #[test] 1321 fn bindgen_test_layout_bn254_snarks_ec_g1_aff() { 1322 const UNINIT: ::core::mem::MaybeUninit<bn254_snarks_ec_g1_aff> = 1323 ::core::mem::MaybeUninit::uninit(); 1324 let ptr = UNINIT.as_ptr(); 1325 assert_eq!( 1326 ::core::mem::size_of::<bn254_snarks_ec_g1_aff>(), 1327 64usize, 1328 concat!("Size of: ", stringify!(bn254_snarks_ec_g1_aff)) 1329 ); 1330 assert_eq!( 1331 ::core::mem::align_of::<bn254_snarks_ec_g1_aff>(), 1332 8usize, 1333 concat!("Alignment of ", stringify!(bn254_snarks_ec_g1_aff)) 1334 ); 1335 assert_eq!( 1336 unsafe { ::core::ptr::addr_of!((*ptr).x) as usize - ptr as usize }, 1337 0usize, 1338 concat!( 1339 "Offset of field: ", 1340 stringify!(bn254_snarks_ec_g1_aff), 1341 "::", 1342 stringify!(x) 1343 ) 1344 ); 1345 assert_eq!( 1346 unsafe { ::core::ptr::addr_of!((*ptr).y) as usize - ptr as usize }, 1347 32usize, 1348 concat!( 1349 "Offset of field: ", 1350 stringify!(bn254_snarks_ec_g1_aff), 1351 "::", 1352 stringify!(y) 1353 ) 1354 ); 1355 } 1356 #[repr(C)] 1357 #[derive(Copy, Clone)] 1358 pub struct bn254_snarks_ec_g1_jac { 1359 x: bn254_snarks_fp, 1360 y: bn254_snarks_fp, 1361 z: bn254_snarks_fp, 1362 } 1363 #[test] 1364 fn bindgen_test_layout_bn254_snarks_ec_g1_jac() { 1365 const UNINIT: ::core::mem::MaybeUninit<bn254_snarks_ec_g1_jac> = 1366 ::core::mem::MaybeUninit::uninit(); 1367 let ptr = UNINIT.as_ptr(); 1368 assert_eq!( 1369 ::core::mem::size_of::<bn254_snarks_ec_g1_jac>(), 1370 96usize, 1371 concat!("Size of: ", stringify!(bn254_snarks_ec_g1_jac)) 1372 ); 1373 assert_eq!( 1374 ::core::mem::align_of::<bn254_snarks_ec_g1_jac>(), 1375 8usize, 1376 concat!("Alignment of ", stringify!(bn254_snarks_ec_g1_jac)) 1377 ); 1378 assert_eq!( 1379 unsafe { ::core::ptr::addr_of!((*ptr).x) as usize - ptr as usize }, 1380 0usize, 1381 concat!( 1382 "Offset of field: ", 1383 stringify!(bn254_snarks_ec_g1_jac), 1384 "::", 1385 stringify!(x) 1386 ) 1387 ); 1388 assert_eq!( 1389 unsafe { ::core::ptr::addr_of!((*ptr).y) as usize - ptr as usize }, 1390 32usize, 1391 concat!( 1392 "Offset of field: ", 1393 stringify!(bn254_snarks_ec_g1_jac), 1394 "::", 1395 stringify!(y) 1396 ) 1397 ); 1398 assert_eq!( 1399 unsafe { ::core::ptr::addr_of!((*ptr).z) as usize - ptr as usize }, 1400 64usize, 1401 concat!( 1402 "Offset of field: ", 1403 stringify!(bn254_snarks_ec_g1_jac), 1404 "::", 1405 stringify!(z) 1406 ) 1407 ); 1408 } 1409 #[repr(C)] 1410 #[derive(Copy, Clone)] 1411 pub struct bn254_snarks_ec_g1_prj { 1412 x: bn254_snarks_fp, 1413 y: bn254_snarks_fp, 1414 z: bn254_snarks_fp, 1415 } 1416 #[test] 1417 fn bindgen_test_layout_bn254_snarks_ec_g1_prj() { 1418 const UNINIT: ::core::mem::MaybeUninit<bn254_snarks_ec_g1_prj> = 1419 ::core::mem::MaybeUninit::uninit(); 1420 let ptr = UNINIT.as_ptr(); 1421 assert_eq!( 1422 ::core::mem::size_of::<bn254_snarks_ec_g1_prj>(), 1423 96usize, 1424 concat!("Size of: ", stringify!(bn254_snarks_ec_g1_prj)) 1425 ); 1426 assert_eq!( 1427 ::core::mem::align_of::<bn254_snarks_ec_g1_prj>(), 1428 8usize, 1429 concat!("Alignment of ", stringify!(bn254_snarks_ec_g1_prj)) 1430 ); 1431 assert_eq!( 1432 unsafe { ::core::ptr::addr_of!((*ptr).x) as usize - ptr as usize }, 1433 0usize, 1434 concat!( 1435 "Offset of field: ", 1436 stringify!(bn254_snarks_ec_g1_prj), 1437 "::", 1438 stringify!(x) 1439 ) 1440 ); 1441 assert_eq!( 1442 unsafe { ::core::ptr::addr_of!((*ptr).y) as usize - ptr as usize }, 1443 32usize, 1444 concat!( 1445 "Offset of field: ", 1446 stringify!(bn254_snarks_ec_g1_prj), 1447 "::", 1448 stringify!(y) 1449 ) 1450 ); 1451 assert_eq!( 1452 unsafe { ::core::ptr::addr_of!((*ptr).z) as usize - ptr as usize }, 1453 64usize, 1454 concat!( 1455 "Offset of field: ", 1456 stringify!(bn254_snarks_ec_g1_prj), 1457 "::", 1458 stringify!(z) 1459 ) 1460 ); 1461 } 1462 #[repr(C)] 1463 #[derive(Copy, Clone)] 1464 pub struct bn254_snarks_ec_g2_aff { 1465 x: bn254_snarks_fp2, 1466 y: bn254_snarks_fp2, 1467 } 1468 #[test] 1469 fn bindgen_test_layout_bn254_snarks_ec_g2_aff() { 1470 const UNINIT: ::core::mem::MaybeUninit<bn254_snarks_ec_g2_aff> = 1471 ::core::mem::MaybeUninit::uninit(); 1472 let ptr = UNINIT.as_ptr(); 1473 assert_eq!( 1474 ::core::mem::size_of::<bn254_snarks_ec_g2_aff>(), 1475 128usize, 1476 concat!("Size of: ", stringify!(bn254_snarks_ec_g2_aff)) 1477 ); 1478 assert_eq!( 1479 ::core::mem::align_of::<bn254_snarks_ec_g2_aff>(), 1480 8usize, 1481 concat!("Alignment of ", stringify!(bn254_snarks_ec_g2_aff)) 1482 ); 1483 assert_eq!( 1484 unsafe { ::core::ptr::addr_of!((*ptr).x) as usize - ptr as usize }, 1485 0usize, 1486 concat!( 1487 "Offset of field: ", 1488 stringify!(bn254_snarks_ec_g2_aff), 1489 "::", 1490 stringify!(x) 1491 ) 1492 ); 1493 assert_eq!( 1494 unsafe { ::core::ptr::addr_of!((*ptr).y) as usize - ptr as usize }, 1495 64usize, 1496 concat!( 1497 "Offset of field: ", 1498 stringify!(bn254_snarks_ec_g2_aff), 1499 "::", 1500 stringify!(y) 1501 ) 1502 ); 1503 } 1504 #[repr(C)] 1505 #[derive(Copy, Clone)] 1506 pub struct bn254_snarks_ec_g2_jac { 1507 x: bn254_snarks_fp2, 1508 y: bn254_snarks_fp2, 1509 z: bn254_snarks_fp2, 1510 } 1511 #[test] 1512 fn bindgen_test_layout_bn254_snarks_ec_g2_jac() { 1513 const UNINIT: ::core::mem::MaybeUninit<bn254_snarks_ec_g2_jac> = 1514 ::core::mem::MaybeUninit::uninit(); 1515 let ptr = UNINIT.as_ptr(); 1516 assert_eq!( 1517 ::core::mem::size_of::<bn254_snarks_ec_g2_jac>(), 1518 192usize, 1519 concat!("Size of: ", stringify!(bn254_snarks_ec_g2_jac)) 1520 ); 1521 assert_eq!( 1522 ::core::mem::align_of::<bn254_snarks_ec_g2_jac>(), 1523 8usize, 1524 concat!("Alignment of ", stringify!(bn254_snarks_ec_g2_jac)) 1525 ); 1526 assert_eq!( 1527 unsafe { ::core::ptr::addr_of!((*ptr).x) as usize - ptr as usize }, 1528 0usize, 1529 concat!( 1530 "Offset of field: ", 1531 stringify!(bn254_snarks_ec_g2_jac), 1532 "::", 1533 stringify!(x) 1534 ) 1535 ); 1536 assert_eq!( 1537 unsafe { ::core::ptr::addr_of!((*ptr).y) as usize - ptr as usize }, 1538 64usize, 1539 concat!( 1540 "Offset of field: ", 1541 stringify!(bn254_snarks_ec_g2_jac), 1542 "::", 1543 stringify!(y) 1544 ) 1545 ); 1546 assert_eq!( 1547 unsafe { ::core::ptr::addr_of!((*ptr).z) as usize - ptr as usize }, 1548 128usize, 1549 concat!( 1550 "Offset of field: ", 1551 stringify!(bn254_snarks_ec_g2_jac), 1552 "::", 1553 stringify!(z) 1554 ) 1555 ); 1556 } 1557 #[repr(C)] 1558 #[derive(Copy, Clone)] 1559 pub struct bn254_snarks_ec_g2_prj { 1560 x: bn254_snarks_fp2, 1561 y: bn254_snarks_fp2, 1562 z: bn254_snarks_fp2, 1563 } 1564 #[test] 1565 fn bindgen_test_layout_bn254_snarks_ec_g2_prj() { 1566 const UNINIT: ::core::mem::MaybeUninit<bn254_snarks_ec_g2_prj> = 1567 ::core::mem::MaybeUninit::uninit(); 1568 let ptr = UNINIT.as_ptr(); 1569 assert_eq!( 1570 ::core::mem::size_of::<bn254_snarks_ec_g2_prj>(), 1571 192usize, 1572 concat!("Size of: ", stringify!(bn254_snarks_ec_g2_prj)) 1573 ); 1574 assert_eq!( 1575 ::core::mem::align_of::<bn254_snarks_ec_g2_prj>(), 1576 8usize, 1577 concat!("Alignment of ", stringify!(bn254_snarks_ec_g2_prj)) 1578 ); 1579 assert_eq!( 1580 unsafe { ::core::ptr::addr_of!((*ptr).x) as usize - ptr as usize }, 1581 0usize, 1582 concat!( 1583 "Offset of field: ", 1584 stringify!(bn254_snarks_ec_g2_prj), 1585 "::", 1586 stringify!(x) 1587 ) 1588 ); 1589 assert_eq!( 1590 unsafe { ::core::ptr::addr_of!((*ptr).y) as usize - ptr as usize }, 1591 64usize, 1592 concat!( 1593 "Offset of field: ", 1594 stringify!(bn254_snarks_ec_g2_prj), 1595 "::", 1596 stringify!(y) 1597 ) 1598 ); 1599 assert_eq!( 1600 unsafe { ::core::ptr::addr_of!((*ptr).z) as usize - ptr as usize }, 1601 128usize, 1602 concat!( 1603 "Offset of field: ", 1604 stringify!(bn254_snarks_ec_g2_prj), 1605 "::", 1606 stringify!(z) 1607 ) 1608 ); 1609 } 1610 extern "C" { 1611 #[must_use] 1612 pub fn ctt_bn254_snarks_fr_unmarshalBE( 1613 dst: *mut bn254_snarks_fr, 1614 src: *const byte, 1615 src_len: isize, 1616 ) -> bool; 1617 } 1618 extern "C" { 1619 #[must_use] 1620 pub fn ctt_bn254_snarks_fr_marshalBE( 1621 dst: *mut byte, 1622 dst_len: isize, 1623 src: *const bn254_snarks_fr, 1624 ) -> bool; 1625 } 1626 extern "C" { 1627 pub fn ctt_bn254_snarks_fr_is_eq( 1628 a: *const bn254_snarks_fr, 1629 b: *const bn254_snarks_fr, 1630 ) -> secret_bool; 1631 } 1632 extern "C" { 1633 pub fn ctt_bn254_snarks_fr_is_zero(a: *const bn254_snarks_fr) -> secret_bool; 1634 } 1635 extern "C" { 1636 pub fn ctt_bn254_snarks_fr_is_one(a: *const bn254_snarks_fr) -> secret_bool; 1637 } 1638 extern "C" { 1639 pub fn ctt_bn254_snarks_fr_is_minus_one(a: *const bn254_snarks_fr) -> secret_bool; 1640 } 1641 extern "C" { 1642 pub fn ctt_bn254_snarks_fr_set_zero(a: *mut bn254_snarks_fr); 1643 } 1644 extern "C" { 1645 pub fn ctt_bn254_snarks_fr_set_one(a: *mut bn254_snarks_fr); 1646 } 1647 extern "C" { 1648 pub fn ctt_bn254_snarks_fr_set_minus_one(a: *mut bn254_snarks_fr); 1649 } 1650 extern "C" { 1651 pub fn ctt_bn254_snarks_fr_neg(r: *mut bn254_snarks_fr, a: *const bn254_snarks_fr); 1652 } 1653 extern "C" { 1654 pub fn ctt_bn254_snarks_fr_neg_in_place(a: *mut bn254_snarks_fr); 1655 } 1656 extern "C" { 1657 pub fn ctt_bn254_snarks_fr_sum( 1658 r: *mut bn254_snarks_fr, 1659 a: *const bn254_snarks_fr, 1660 b: *const bn254_snarks_fr, 1661 ); 1662 } 1663 extern "C" { 1664 pub fn ctt_bn254_snarks_fr_add_in_place(a: *mut bn254_snarks_fr, b: *const bn254_snarks_fr); 1665 } 1666 extern "C" { 1667 pub fn ctt_bn254_snarks_fr_diff( 1668 r: *mut bn254_snarks_fr, 1669 a: *const bn254_snarks_fr, 1670 b: *const bn254_snarks_fr, 1671 ); 1672 } 1673 extern "C" { 1674 pub fn ctt_bn254_snarks_fr_sub_in_place(a: *mut bn254_snarks_fr, b: *const bn254_snarks_fr); 1675 } 1676 extern "C" { 1677 pub fn ctt_bn254_snarks_fr_double(r: *mut bn254_snarks_fr, a: *const bn254_snarks_fr); 1678 } 1679 extern "C" { 1680 pub fn ctt_bn254_snarks_fr_double_in_place(a: *mut bn254_snarks_fr); 1681 } 1682 extern "C" { 1683 pub fn ctt_bn254_snarks_fr_prod( 1684 r: *mut bn254_snarks_fr, 1685 a: *const bn254_snarks_fr, 1686 b: *const bn254_snarks_fr, 1687 ); 1688 } 1689 extern "C" { 1690 pub fn ctt_bn254_snarks_fr_mul_in_place(a: *mut bn254_snarks_fr, b: *const bn254_snarks_fr); 1691 } 1692 extern "C" { 1693 pub fn ctt_bn254_snarks_fr_square(r: *mut bn254_snarks_fr, a: *const bn254_snarks_fr); 1694 } 1695 extern "C" { 1696 pub fn ctt_bn254_snarks_fr_square_in_place(a: *mut bn254_snarks_fr); 1697 } 1698 extern "C" { 1699 pub fn ctt_bn254_snarks_fr_div2(a: *mut bn254_snarks_fr); 1700 } 1701 extern "C" { 1702 pub fn ctt_bn254_snarks_fr_inv(r: *mut bn254_snarks_fr, a: *const bn254_snarks_fr); 1703 } 1704 extern "C" { 1705 pub fn ctt_bn254_snarks_fr_inv_in_place(a: *mut bn254_snarks_fr); 1706 } 1707 extern "C" { 1708 pub fn ctt_bn254_snarks_fr_ccopy( 1709 a: *mut bn254_snarks_fr, 1710 b: *const bn254_snarks_fr, 1711 ctl: secret_bool, 1712 ); 1713 } 1714 extern "C" { 1715 pub fn ctt_bn254_snarks_fr_cswap( 1716 a: *mut bn254_snarks_fr, 1717 b: *mut bn254_snarks_fr, 1718 ctl: secret_bool, 1719 ); 1720 } 1721 extern "C" { 1722 pub fn ctt_bn254_snarks_fr_cset_zero(a: *mut bn254_snarks_fr, ctl: secret_bool); 1723 } 1724 extern "C" { 1725 pub fn ctt_bn254_snarks_fr_cset_one(a: *mut bn254_snarks_fr, ctl: secret_bool); 1726 } 1727 extern "C" { 1728 pub fn ctt_bn254_snarks_fr_cneg_in_place(a: *mut bn254_snarks_fr, ctl: secret_bool); 1729 } 1730 extern "C" { 1731 pub fn ctt_bn254_snarks_fr_cadd_in_place( 1732 a: *mut bn254_snarks_fr, 1733 b: *const bn254_snarks_fr, 1734 ctl: secret_bool, 1735 ); 1736 } 1737 extern "C" { 1738 pub fn ctt_bn254_snarks_fr_csub_in_place( 1739 a: *mut bn254_snarks_fr, 1740 b: *const bn254_snarks_fr, 1741 ctl: secret_bool, 1742 ); 1743 } 1744 extern "C" { 1745 #[must_use] 1746 pub fn ctt_bn254_snarks_fp_unmarshalBE( 1747 dst: *mut bn254_snarks_fp, 1748 src: *const byte, 1749 src_len: isize, 1750 ) -> bool; 1751 } 1752 extern "C" { 1753 #[must_use] 1754 pub fn ctt_bn254_snarks_fp_marshalBE( 1755 dst: *mut byte, 1756 dst_len: isize, 1757 src: *const bn254_snarks_fp, 1758 ) -> bool; 1759 } 1760 extern "C" { 1761 pub fn ctt_bn254_snarks_fp_is_eq( 1762 a: *const bn254_snarks_fp, 1763 b: *const bn254_snarks_fp, 1764 ) -> secret_bool; 1765 } 1766 extern "C" { 1767 pub fn ctt_bn254_snarks_fp_is_zero(a: *const bn254_snarks_fp) -> secret_bool; 1768 } 1769 extern "C" { 1770 pub fn ctt_bn254_snarks_fp_is_one(a: *const bn254_snarks_fp) -> secret_bool; 1771 } 1772 extern "C" { 1773 pub fn ctt_bn254_snarks_fp_is_minus_one(a: *const bn254_snarks_fp) -> secret_bool; 1774 } 1775 extern "C" { 1776 pub fn ctt_bn254_snarks_fp_set_zero(a: *mut bn254_snarks_fp); 1777 } 1778 extern "C" { 1779 pub fn ctt_bn254_snarks_fp_set_one(a: *mut bn254_snarks_fp); 1780 } 1781 extern "C" { 1782 pub fn ctt_bn254_snarks_fp_set_minus_one(a: *mut bn254_snarks_fp); 1783 } 1784 extern "C" { 1785 pub fn ctt_bn254_snarks_fp_neg(r: *mut bn254_snarks_fp, a: *const bn254_snarks_fp); 1786 } 1787 extern "C" { 1788 pub fn ctt_bn254_snarks_fp_neg_in_place(a: *mut bn254_snarks_fp); 1789 } 1790 extern "C" { 1791 pub fn ctt_bn254_snarks_fp_sum( 1792 r: *mut bn254_snarks_fp, 1793 a: *const bn254_snarks_fp, 1794 b: *const bn254_snarks_fp, 1795 ); 1796 } 1797 extern "C" { 1798 pub fn ctt_bn254_snarks_fp_add_in_place(a: *mut bn254_snarks_fp, b: *const bn254_snarks_fp); 1799 } 1800 extern "C" { 1801 pub fn ctt_bn254_snarks_fp_diff( 1802 r: *mut bn254_snarks_fp, 1803 a: *const bn254_snarks_fp, 1804 b: *const bn254_snarks_fp, 1805 ); 1806 } 1807 extern "C" { 1808 pub fn ctt_bn254_snarks_fp_sub_in_place(a: *mut bn254_snarks_fp, b: *const bn254_snarks_fp); 1809 } 1810 extern "C" { 1811 pub fn ctt_bn254_snarks_fp_double(r: *mut bn254_snarks_fp, a: *const bn254_snarks_fp); 1812 } 1813 extern "C" { 1814 pub fn ctt_bn254_snarks_fp_double_in_place(a: *mut bn254_snarks_fp); 1815 } 1816 extern "C" { 1817 pub fn ctt_bn254_snarks_fp_prod( 1818 r: *mut bn254_snarks_fp, 1819 a: *const bn254_snarks_fp, 1820 b: *const bn254_snarks_fp, 1821 ); 1822 } 1823 extern "C" { 1824 pub fn ctt_bn254_snarks_fp_mul_in_place(a: *mut bn254_snarks_fp, b: *const bn254_snarks_fp); 1825 } 1826 extern "C" { 1827 pub fn ctt_bn254_snarks_fp_square(r: *mut bn254_snarks_fp, a: *const bn254_snarks_fp); 1828 } 1829 extern "C" { 1830 pub fn ctt_bn254_snarks_fp_square_in_place(a: *mut bn254_snarks_fp); 1831 } 1832 extern "C" { 1833 pub fn ctt_bn254_snarks_fp_div2(a: *mut bn254_snarks_fp); 1834 } 1835 extern "C" { 1836 pub fn ctt_bn254_snarks_fp_inv(r: *mut bn254_snarks_fp, a: *const bn254_snarks_fp); 1837 } 1838 extern "C" { 1839 pub fn ctt_bn254_snarks_fp_inv_in_place(a: *mut bn254_snarks_fp); 1840 } 1841 extern "C" { 1842 pub fn ctt_bn254_snarks_fp_ccopy( 1843 a: *mut bn254_snarks_fp, 1844 b: *const bn254_snarks_fp, 1845 ctl: secret_bool, 1846 ); 1847 } 1848 extern "C" { 1849 pub fn ctt_bn254_snarks_fp_cswap( 1850 a: *mut bn254_snarks_fp, 1851 b: *mut bn254_snarks_fp, 1852 ctl: secret_bool, 1853 ); 1854 } 1855 extern "C" { 1856 pub fn ctt_bn254_snarks_fp_cset_zero(a: *mut bn254_snarks_fp, ctl: secret_bool); 1857 } 1858 extern "C" { 1859 pub fn ctt_bn254_snarks_fp_cset_one(a: *mut bn254_snarks_fp, ctl: secret_bool); 1860 } 1861 extern "C" { 1862 pub fn ctt_bn254_snarks_fp_cneg_in_place(a: *mut bn254_snarks_fp, ctl: secret_bool); 1863 } 1864 extern "C" { 1865 pub fn ctt_bn254_snarks_fp_cadd_in_place( 1866 a: *mut bn254_snarks_fp, 1867 b: *const bn254_snarks_fp, 1868 ctl: secret_bool, 1869 ); 1870 } 1871 extern "C" { 1872 pub fn ctt_bn254_snarks_fp_csub_in_place( 1873 a: *mut bn254_snarks_fp, 1874 b: *const bn254_snarks_fp, 1875 ctl: secret_bool, 1876 ); 1877 } 1878 extern "C" { 1879 pub fn ctt_bn254_snarks_fp_is_square(a: *const bn254_snarks_fp) -> secret_bool; 1880 } 1881 extern "C" { 1882 pub fn ctt_bn254_snarks_fp_invsqrt(r: *mut bn254_snarks_fp, a: *const bn254_snarks_fp); 1883 } 1884 extern "C" { 1885 pub fn ctt_bn254_snarks_fp_invsqrt_in_place( 1886 r: *mut bn254_snarks_fp, 1887 a: *const bn254_snarks_fp, 1888 ) -> secret_bool; 1889 } 1890 extern "C" { 1891 pub fn ctt_bn254_snarks_fp_sqrt_in_place(a: *mut bn254_snarks_fp); 1892 } 1893 extern "C" { 1894 pub fn ctt_bn254_snarks_fp_sqrt_if_square_in_place(a: *mut bn254_snarks_fp) -> secret_bool; 1895 } 1896 extern "C" { 1897 pub fn ctt_bn254_snarks_fp_sqrt_invsqrt( 1898 sqrt: *mut bn254_snarks_fp, 1899 invsqrt: *mut bn254_snarks_fp, 1900 a: *const bn254_snarks_fp, 1901 ); 1902 } 1903 extern "C" { 1904 pub fn ctt_bn254_snarks_fp_sqrt_invsqrt_if_square( 1905 sqrt: *mut bn254_snarks_fp, 1906 invsqrt: *mut bn254_snarks_fp, 1907 a: *const bn254_snarks_fp, 1908 ) -> secret_bool; 1909 } 1910 extern "C" { 1911 pub fn ctt_bn254_snarks_fp_sqrt_ratio_if_square( 1912 r: *mut bn254_snarks_fp, 1913 u: *const bn254_snarks_fp, 1914 v: *const bn254_snarks_fp, 1915 ) -> secret_bool; 1916 } 1917 extern "C" { 1918 pub fn ctt_bn254_snarks_fp2_is_eq( 1919 a: *const bn254_snarks_fp2, 1920 b: *const bn254_snarks_fp2, 1921 ) -> secret_bool; 1922 } 1923 extern "C" { 1924 pub fn ctt_bn254_snarks_fp2_is_zero(a: *const bn254_snarks_fp2) -> secret_bool; 1925 } 1926 extern "C" { 1927 pub fn ctt_bn254_snarks_fp2_is_one(a: *const bn254_snarks_fp2) -> secret_bool; 1928 } 1929 extern "C" { 1930 pub fn ctt_bn254_snarks_fp2_is_minus_one(a: *const bn254_snarks_fp2) -> secret_bool; 1931 } 1932 extern "C" { 1933 pub fn ctt_bn254_snarks_fp2_set_zero(a: *mut bn254_snarks_fp2); 1934 } 1935 extern "C" { 1936 pub fn ctt_bn254_snarks_fp2_set_one(a: *mut bn254_snarks_fp2); 1937 } 1938 extern "C" { 1939 pub fn ctt_bn254_snarks_fp2_set_minus_one(a: *mut bn254_snarks_fp2); 1940 } 1941 extern "C" { 1942 pub fn ctt_bn254_snarks_fp2_neg(a: *mut bn254_snarks_fp2); 1943 } 1944 extern "C" { 1945 pub fn ctt_bn254_snarks_fp2_sum( 1946 r: *mut bn254_snarks_fp2, 1947 a: *const bn254_snarks_fp2, 1948 b: *const bn254_snarks_fp2, 1949 ); 1950 } 1951 extern "C" { 1952 pub fn ctt_bn254_snarks_fp2_add_in_place(a: *mut bn254_snarks_fp2, b: *const bn254_snarks_fp2); 1953 } 1954 extern "C" { 1955 pub fn ctt_bn254_snarks_fp2_diff( 1956 r: *mut bn254_snarks_fp2, 1957 a: *const bn254_snarks_fp2, 1958 b: *const bn254_snarks_fp2, 1959 ); 1960 } 1961 extern "C" { 1962 pub fn ctt_bn254_snarks_fp2_sub_in_place(a: *mut bn254_snarks_fp2, b: *const bn254_snarks_fp2); 1963 } 1964 extern "C" { 1965 pub fn ctt_bn254_snarks_fp2_double(r: *mut bn254_snarks_fp2, a: *const bn254_snarks_fp2); 1966 } 1967 extern "C" { 1968 pub fn ctt_bn254_snarks_fp2_double_in_place(a: *mut bn254_snarks_fp2); 1969 } 1970 extern "C" { 1971 pub fn ctt_bn254_snarks_fp2_conj(r: *mut bn254_snarks_fp2, a: *const bn254_snarks_fp2); 1972 } 1973 extern "C" { 1974 pub fn ctt_bn254_snarks_fp2_conj_in_place(a: *mut bn254_snarks_fp2); 1975 } 1976 extern "C" { 1977 pub fn ctt_bn254_snarks_fp2_conjneg(r: *mut bn254_snarks_fp2, a: *const bn254_snarks_fp2); 1978 } 1979 extern "C" { 1980 pub fn ctt_bn254_snarks_fp2_conjneg_in_place(a: *mut bn254_snarks_fp2); 1981 } 1982 extern "C" { 1983 pub fn ctt_bn254_snarks_fp2_prod( 1984 r: *mut bn254_snarks_fp2, 1985 a: *const bn254_snarks_fp2, 1986 b: *const bn254_snarks_fp2, 1987 ); 1988 } 1989 extern "C" { 1990 pub fn ctt_bn254_snarks_fp2_mul_in_place(a: *mut bn254_snarks_fp2, b: *const bn254_snarks_fp2); 1991 } 1992 extern "C" { 1993 pub fn ctt_bn254_snarks_fp2_square(r: *mut bn254_snarks_fp2, a: *const bn254_snarks_fp2); 1994 } 1995 extern "C" { 1996 pub fn ctt_bn254_snarks_fp2_square_in_place(a: *mut bn254_snarks_fp2); 1997 } 1998 extern "C" { 1999 pub fn ctt_bn254_snarks_fp2_div2(a: *mut bn254_snarks_fp2); 2000 } 2001 extern "C" { 2002 pub fn ctt_bn254_snarks_fp2_inv(r: *mut bn254_snarks_fp2, a: *const bn254_snarks_fp2); 2003 } 2004 extern "C" { 2005 pub fn ctt_bn254_snarks_fp2_inv_in_place(a: *mut bn254_snarks_fp2); 2006 } 2007 extern "C" { 2008 pub fn ctt_bn254_snarks_fp2_ccopy( 2009 a: *mut bn254_snarks_fp2, 2010 b: *const bn254_snarks_fp2, 2011 ctl: secret_bool, 2012 ); 2013 } 2014 extern "C" { 2015 pub fn ctt_bn254_snarks_fp2_cset_zero(a: *mut bn254_snarks_fp2, ctl: secret_bool); 2016 } 2017 extern "C" { 2018 pub fn ctt_bn254_snarks_fp2_cset_one(a: *mut bn254_snarks_fp2, ctl: secret_bool); 2019 } 2020 extern "C" { 2021 pub fn ctt_bn254_snarks_fp2_cneg_in_place(a: *mut bn254_snarks_fp2, ctl: secret_bool); 2022 } 2023 extern "C" { 2024 pub fn ctt_bn254_snarks_fp2_cadd_in_place( 2025 a: *mut bn254_snarks_fp2, 2026 b: *const bn254_snarks_fp2, 2027 ctl: secret_bool, 2028 ); 2029 } 2030 extern "C" { 2031 pub fn ctt_bn254_snarks_fp2_csub_in_place( 2032 a: *mut bn254_snarks_fp2, 2033 b: *const bn254_snarks_fp2, 2034 ctl: secret_bool, 2035 ); 2036 } 2037 extern "C" { 2038 pub fn ctt_bn254_snarks_fp2_is_square(a: *const bn254_snarks_fp2) -> secret_bool; 2039 } 2040 extern "C" { 2041 pub fn ctt_bn254_snarks_fp2_sqrt_in_place(a: *mut bn254_snarks_fp2); 2042 } 2043 extern "C" { 2044 pub fn ctt_bn254_snarks_fp2_sqrt_if_square_in_place(a: *mut bn254_snarks_fp2) -> secret_bool; 2045 } 2046 extern "C" { 2047 pub fn ctt_bn254_snarks_ec_g1_aff_is_eq( 2048 P: *const bn254_snarks_ec_g1_aff, 2049 Q: *const bn254_snarks_ec_g1_aff, 2050 ) -> secret_bool; 2051 } 2052 extern "C" { 2053 pub fn ctt_bn254_snarks_ec_g1_aff_is_inf(P: *const bn254_snarks_ec_g1_aff) -> secret_bool; 2054 } 2055 extern "C" { 2056 pub fn ctt_bn254_snarks_ec_g1_aff_set_inf(P: *mut bn254_snarks_ec_g1_aff); 2057 } 2058 extern "C" { 2059 pub fn ctt_bn254_snarks_ec_g1_aff_ccopy( 2060 P: *mut bn254_snarks_ec_g1_aff, 2061 Q: *const bn254_snarks_ec_g1_aff, 2062 ctl: secret_bool, 2063 ); 2064 } 2065 extern "C" { 2066 pub fn ctt_bn254_snarks_ec_g1_aff_is_on_curve( 2067 x: *const bn254_snarks_fp, 2068 y: *const bn254_snarks_fp, 2069 ) -> secret_bool; 2070 } 2071 extern "C" { 2072 pub fn ctt_bn254_snarks_ec_g1_aff_neg( 2073 P: *mut bn254_snarks_ec_g1_aff, 2074 Q: *const bn254_snarks_ec_g1_aff, 2075 ); 2076 } 2077 extern "C" { 2078 pub fn ctt_bn254_snarks_ec_g1_aff_neg_in_place(P: *mut bn254_snarks_ec_g1_aff); 2079 } 2080 extern "C" { 2081 pub fn ctt_bn254_snarks_ec_g1_jac_is_eq( 2082 P: *const bn254_snarks_ec_g1_jac, 2083 Q: *const bn254_snarks_ec_g1_jac, 2084 ) -> secret_bool; 2085 } 2086 extern "C" { 2087 pub fn ctt_bn254_snarks_ec_g1_jac_is_inf(P: *const bn254_snarks_ec_g1_jac) -> secret_bool; 2088 } 2089 extern "C" { 2090 pub fn ctt_bn254_snarks_ec_g1_jac_set_inf(P: *mut bn254_snarks_ec_g1_jac); 2091 } 2092 extern "C" { 2093 pub fn ctt_bn254_snarks_ec_g1_jac_ccopy( 2094 P: *mut bn254_snarks_ec_g1_jac, 2095 Q: *const bn254_snarks_ec_g1_jac, 2096 ctl: secret_bool, 2097 ); 2098 } 2099 extern "C" { 2100 pub fn ctt_bn254_snarks_ec_g1_jac_neg( 2101 P: *mut bn254_snarks_ec_g1_jac, 2102 Q: *const bn254_snarks_ec_g1_jac, 2103 ); 2104 } 2105 extern "C" { 2106 pub fn ctt_bn254_snarks_ec_g1_jac_neg_in_place(P: *mut bn254_snarks_ec_g1_jac); 2107 } 2108 extern "C" { 2109 pub fn ctt_bn254_snarks_ec_g1_jac_cneg_in_place( 2110 P: *mut bn254_snarks_ec_g1_jac, 2111 ctl: secret_bool, 2112 ); 2113 } 2114 extern "C" { 2115 pub fn ctt_bn254_snarks_ec_g1_jac_sum( 2116 r: *mut bn254_snarks_ec_g1_jac, 2117 P: *const bn254_snarks_ec_g1_jac, 2118 Q: *const bn254_snarks_ec_g1_jac, 2119 ); 2120 } 2121 extern "C" { 2122 pub fn ctt_bn254_snarks_ec_g1_jac_add_in_place( 2123 P: *mut bn254_snarks_ec_g1_jac, 2124 Q: *const bn254_snarks_ec_g1_jac, 2125 ); 2126 } 2127 extern "C" { 2128 pub fn ctt_bn254_snarks_ec_g1_jac_diff( 2129 r: *mut bn254_snarks_ec_g1_jac, 2130 P: *const bn254_snarks_ec_g1_jac, 2131 Q: *const bn254_snarks_ec_g1_jac, 2132 ); 2133 } 2134 extern "C" { 2135 pub fn ctt_bn254_snarks_ec_g1_jac_double( 2136 r: *mut bn254_snarks_ec_g1_jac, 2137 P: *const bn254_snarks_ec_g1_jac, 2138 ); 2139 } 2140 extern "C" { 2141 pub fn ctt_bn254_snarks_ec_g1_jac_double_in_place(P: *mut bn254_snarks_ec_g1_jac); 2142 } 2143 extern "C" { 2144 pub fn ctt_bn254_snarks_ec_g1_jac_affine( 2145 dst: *mut bn254_snarks_ec_g1_aff, 2146 src: *const bn254_snarks_ec_g1_jac, 2147 ); 2148 } 2149 extern "C" { 2150 pub fn ctt_bn254_snarks_ec_g1_jac_from_affine( 2151 dst: *mut bn254_snarks_ec_g1_jac, 2152 src: *const bn254_snarks_ec_g1_aff, 2153 ); 2154 } 2155 extern "C" { 2156 pub fn ctt_bn254_snarks_ec_g1_prj_is_eq( 2157 P: *const bn254_snarks_ec_g1_prj, 2158 Q: *const bn254_snarks_ec_g1_prj, 2159 ) -> secret_bool; 2160 } 2161 extern "C" { 2162 pub fn ctt_bn254_snarks_ec_g1_prj_is_inf(P: *const bn254_snarks_ec_g1_prj) -> secret_bool; 2163 } 2164 extern "C" { 2165 pub fn ctt_bn254_snarks_ec_g1_prj_set_inf(P: *mut bn254_snarks_ec_g1_prj); 2166 } 2167 extern "C" { 2168 pub fn ctt_bn254_snarks_ec_g1_prj_ccopy( 2169 P: *mut bn254_snarks_ec_g1_prj, 2170 Q: *const bn254_snarks_ec_g1_prj, 2171 ctl: secret_bool, 2172 ); 2173 } 2174 extern "C" { 2175 pub fn ctt_bn254_snarks_ec_g1_prj_neg( 2176 P: *mut bn254_snarks_ec_g1_prj, 2177 Q: *const bn254_snarks_ec_g1_prj, 2178 ); 2179 } 2180 extern "C" { 2181 pub fn ctt_bn254_snarks_ec_g1_prj_neg_in_place(P: *mut bn254_snarks_ec_g1_prj); 2182 } 2183 extern "C" { 2184 pub fn ctt_bn254_snarks_ec_g1_prj_cneg_in_place( 2185 P: *mut bn254_snarks_ec_g1_prj, 2186 ctl: secret_bool, 2187 ); 2188 } 2189 extern "C" { 2190 pub fn ctt_bn254_snarks_ec_g1_prj_sum( 2191 r: *mut bn254_snarks_ec_g1_prj, 2192 P: *const bn254_snarks_ec_g1_prj, 2193 Q: *const bn254_snarks_ec_g1_prj, 2194 ); 2195 } 2196 extern "C" { 2197 pub fn ctt_bn254_snarks_ec_g1_prj_add_in_place( 2198 P: *mut bn254_snarks_ec_g1_prj, 2199 Q: *const bn254_snarks_ec_g1_prj, 2200 ); 2201 } 2202 extern "C" { 2203 pub fn ctt_bn254_snarks_ec_g1_prj_diff( 2204 r: *mut bn254_snarks_ec_g1_prj, 2205 P: *const bn254_snarks_ec_g1_prj, 2206 Q: *const bn254_snarks_ec_g1_prj, 2207 ); 2208 } 2209 extern "C" { 2210 pub fn ctt_bn254_snarks_ec_g1_prj_double( 2211 r: *mut bn254_snarks_ec_g1_prj, 2212 P: *const bn254_snarks_ec_g1_prj, 2213 ); 2214 } 2215 extern "C" { 2216 pub fn ctt_bn254_snarks_ec_g1_prj_double_in_place(P: *mut bn254_snarks_ec_g1_prj); 2217 } 2218 extern "C" { 2219 pub fn ctt_bn254_snarks_ec_g1_prj_affine( 2220 dst: *mut bn254_snarks_ec_g1_aff, 2221 src: *const bn254_snarks_ec_g1_prj, 2222 ); 2223 } 2224 extern "C" { 2225 pub fn ctt_bn254_snarks_ec_g1_prj_from_affine( 2226 dst: *mut bn254_snarks_ec_g1_prj, 2227 src: *const bn254_snarks_ec_g1_aff, 2228 ); 2229 } 2230 extern "C" { 2231 pub fn ctt_bn254_snarks_ec_g2_aff_is_eq( 2232 P: *const bn254_snarks_ec_g2_aff, 2233 Q: *const bn254_snarks_ec_g2_aff, 2234 ) -> secret_bool; 2235 } 2236 extern "C" { 2237 pub fn ctt_bn254_snarks_ec_g2_aff_is_inf(P: *const bn254_snarks_ec_g2_aff) -> secret_bool; 2238 } 2239 extern "C" { 2240 pub fn ctt_bn254_snarks_ec_g2_aff_set_inf(P: *mut bn254_snarks_ec_g2_aff); 2241 } 2242 extern "C" { 2243 pub fn ctt_bn254_snarks_ec_g2_aff_ccopy( 2244 P: *mut bn254_snarks_ec_g2_aff, 2245 Q: *const bn254_snarks_ec_g2_aff, 2246 ctl: secret_bool, 2247 ); 2248 } 2249 extern "C" { 2250 pub fn ctt_bn254_snarks_ec_g2_aff_is_on_curve( 2251 x: *const bn254_snarks_fp2, 2252 y: *const bn254_snarks_fp2, 2253 ) -> secret_bool; 2254 } 2255 extern "C" { 2256 pub fn ctt_bn254_snarks_ec_g2_aff_neg( 2257 P: *mut bn254_snarks_ec_g2_aff, 2258 Q: *const bn254_snarks_ec_g2_aff, 2259 ); 2260 } 2261 extern "C" { 2262 pub fn ctt_bn254_snarks_ec_g2_aff_neg_in_place(P: *mut bn254_snarks_ec_g2_aff); 2263 } 2264 extern "C" { 2265 pub fn ctt_bn254_snarks_ec_g2_jac_is_eq( 2266 P: *const bn254_snarks_ec_g2_jac, 2267 Q: *const bn254_snarks_ec_g2_jac, 2268 ) -> secret_bool; 2269 } 2270 extern "C" { 2271 pub fn ctt_bn254_snarks_ec_g2_jac_is_inf(P: *const bn254_snarks_ec_g2_jac) -> secret_bool; 2272 } 2273 extern "C" { 2274 pub fn ctt_bn254_snarks_ec_g2_jac_set_inf(P: *mut bn254_snarks_ec_g2_jac); 2275 } 2276 extern "C" { 2277 pub fn ctt_bn254_snarks_ec_g2_jac_ccopy( 2278 P: *mut bn254_snarks_ec_g2_jac, 2279 Q: *const bn254_snarks_ec_g2_jac, 2280 ctl: secret_bool, 2281 ); 2282 } 2283 extern "C" { 2284 pub fn ctt_bn254_snarks_ec_g2_jac_neg( 2285 P: *mut bn254_snarks_ec_g2_jac, 2286 Q: *const bn254_snarks_ec_g2_jac, 2287 ); 2288 } 2289 extern "C" { 2290 pub fn ctt_bn254_snarks_ec_g2_jac_neg_in_place(P: *mut bn254_snarks_ec_g2_jac); 2291 } 2292 extern "C" { 2293 pub fn ctt_bn254_snarks_ec_g2_jac_cneg_in_place( 2294 P: *mut bn254_snarks_ec_g2_jac, 2295 ctl: secret_bool, 2296 ); 2297 } 2298 extern "C" { 2299 pub fn ctt_bn254_snarks_ec_g2_jac_sum( 2300 r: *mut bn254_snarks_ec_g2_jac, 2301 P: *const bn254_snarks_ec_g2_jac, 2302 Q: *const bn254_snarks_ec_g2_jac, 2303 ); 2304 } 2305 extern "C" { 2306 pub fn ctt_bn254_snarks_ec_g2_jac_add_in_place( 2307 P: *mut bn254_snarks_ec_g2_jac, 2308 Q: *const bn254_snarks_ec_g2_jac, 2309 ); 2310 } 2311 extern "C" { 2312 pub fn ctt_bn254_snarks_ec_g2_jac_diff( 2313 r: *mut bn254_snarks_ec_g2_jac, 2314 P: *const bn254_snarks_ec_g2_jac, 2315 Q: *const bn254_snarks_ec_g2_jac, 2316 ); 2317 } 2318 extern "C" { 2319 pub fn ctt_bn254_snarks_ec_g2_jac_double( 2320 r: *mut bn254_snarks_ec_g2_jac, 2321 P: *const bn254_snarks_ec_g2_jac, 2322 ); 2323 } 2324 extern "C" { 2325 pub fn ctt_bn254_snarks_ec_g2_jac_double_in_place(P: *mut bn254_snarks_ec_g2_jac); 2326 } 2327 extern "C" { 2328 pub fn ctt_bn254_snarks_ec_g2_jac_affine( 2329 dst: *mut bn254_snarks_ec_g2_aff, 2330 src: *const bn254_snarks_ec_g2_jac, 2331 ); 2332 } 2333 extern "C" { 2334 pub fn ctt_bn254_snarks_ec_g2_jac_from_affine( 2335 dst: *mut bn254_snarks_ec_g2_jac, 2336 src: *const bn254_snarks_ec_g2_aff, 2337 ); 2338 } 2339 extern "C" { 2340 pub fn ctt_bn254_snarks_ec_g2_prj_is_eq( 2341 P: *const bn254_snarks_ec_g2_prj, 2342 Q: *const bn254_snarks_ec_g2_prj, 2343 ) -> secret_bool; 2344 } 2345 extern "C" { 2346 pub fn ctt_bn254_snarks_ec_g2_prj_is_inf(P: *const bn254_snarks_ec_g2_prj) -> secret_bool; 2347 } 2348 extern "C" { 2349 pub fn ctt_bn254_snarks_ec_g2_prj_set_inf(P: *mut bn254_snarks_ec_g2_prj); 2350 } 2351 extern "C" { 2352 pub fn ctt_bn254_snarks_ec_g2_prj_ccopy( 2353 P: *mut bn254_snarks_ec_g2_prj, 2354 Q: *const bn254_snarks_ec_g2_prj, 2355 ctl: secret_bool, 2356 ); 2357 } 2358 extern "C" { 2359 pub fn ctt_bn254_snarks_ec_g2_prj_neg( 2360 P: *mut bn254_snarks_ec_g2_prj, 2361 Q: *const bn254_snarks_ec_g2_prj, 2362 ); 2363 } 2364 extern "C" { 2365 pub fn ctt_bn254_snarks_ec_g2_prj_neg_in_place(P: *mut bn254_snarks_ec_g2_prj); 2366 } 2367 extern "C" { 2368 pub fn ctt_bn254_snarks_ec_g2_prj_cneg_in_place( 2369 P: *mut bn254_snarks_ec_g2_prj, 2370 ctl: secret_bool, 2371 ); 2372 } 2373 extern "C" { 2374 pub fn ctt_bn254_snarks_ec_g2_prj_sum( 2375 r: *mut bn254_snarks_ec_g2_prj, 2376 P: *const bn254_snarks_ec_g2_prj, 2377 Q: *const bn254_snarks_ec_g2_prj, 2378 ); 2379 } 2380 extern "C" { 2381 pub fn ctt_bn254_snarks_ec_g2_prj_add_in_place( 2382 P: *mut bn254_snarks_ec_g2_prj, 2383 Q: *const bn254_snarks_ec_g2_prj, 2384 ); 2385 } 2386 extern "C" { 2387 pub fn ctt_bn254_snarks_ec_g2_prj_diff( 2388 r: *mut bn254_snarks_ec_g2_prj, 2389 P: *const bn254_snarks_ec_g2_prj, 2390 Q: *const bn254_snarks_ec_g2_prj, 2391 ); 2392 } 2393 extern "C" { 2394 pub fn ctt_bn254_snarks_ec_g2_prj_double( 2395 r: *mut bn254_snarks_ec_g2_prj, 2396 P: *const bn254_snarks_ec_g2_prj, 2397 ); 2398 } 2399 extern "C" { 2400 pub fn ctt_bn254_snarks_ec_g2_prj_double_in_place(P: *mut bn254_snarks_ec_g2_prj); 2401 } 2402 extern "C" { 2403 pub fn ctt_bn254_snarks_ec_g2_prj_affine( 2404 dst: *mut bn254_snarks_ec_g2_aff, 2405 src: *const bn254_snarks_ec_g2_prj, 2406 ); 2407 } 2408 extern "C" { 2409 pub fn ctt_bn254_snarks_ec_g2_prj_from_affine( 2410 dst: *mut bn254_snarks_ec_g2_prj, 2411 src: *const bn254_snarks_ec_g2_aff, 2412 ); 2413 } 2414 #[repr(C)] 2415 #[derive(Copy, Clone)] 2416 pub struct pallas_fr { 2417 limbs: [secret_word; 4usize], 2418 } 2419 #[test] 2420 fn bindgen_test_layout_pallas_fr() { 2421 const UNINIT: ::core::mem::MaybeUninit<pallas_fr> = ::core::mem::MaybeUninit::uninit(); 2422 let ptr = UNINIT.as_ptr(); 2423 assert_eq!( 2424 ::core::mem::size_of::<pallas_fr>(), 2425 32usize, 2426 concat!("Size of: ", stringify!(pallas_fr)) 2427 ); 2428 assert_eq!( 2429 ::core::mem::align_of::<pallas_fr>(), 2430 8usize, 2431 concat!("Alignment of ", stringify!(pallas_fr)) 2432 ); 2433 assert_eq!( 2434 unsafe { ::core::ptr::addr_of!((*ptr).limbs) as usize - ptr as usize }, 2435 0usize, 2436 concat!( 2437 "Offset of field: ", 2438 stringify!(pallas_fr), 2439 "::", 2440 stringify!(limbs) 2441 ) 2442 ); 2443 } 2444 #[repr(C)] 2445 #[derive(Copy, Clone)] 2446 pub struct pallas_fp { 2447 limbs: [secret_word; 4usize], 2448 } 2449 #[test] 2450 fn bindgen_test_layout_pallas_fp() { 2451 const UNINIT: ::core::mem::MaybeUninit<pallas_fp> = ::core::mem::MaybeUninit::uninit(); 2452 let ptr = UNINIT.as_ptr(); 2453 assert_eq!( 2454 ::core::mem::size_of::<pallas_fp>(), 2455 32usize, 2456 concat!("Size of: ", stringify!(pallas_fp)) 2457 ); 2458 assert_eq!( 2459 ::core::mem::align_of::<pallas_fp>(), 2460 8usize, 2461 concat!("Alignment of ", stringify!(pallas_fp)) 2462 ); 2463 assert_eq!( 2464 unsafe { ::core::ptr::addr_of!((*ptr).limbs) as usize - ptr as usize }, 2465 0usize, 2466 concat!( 2467 "Offset of field: ", 2468 stringify!(pallas_fp), 2469 "::", 2470 stringify!(limbs) 2471 ) 2472 ); 2473 } 2474 #[repr(C)] 2475 #[derive(Copy, Clone)] 2476 pub struct pallas_ec_aff { 2477 x: pallas_fp, 2478 y: pallas_fp, 2479 } 2480 #[test] 2481 fn bindgen_test_layout_pallas_ec_aff() { 2482 const UNINIT: ::core::mem::MaybeUninit<pallas_ec_aff> = ::core::mem::MaybeUninit::uninit(); 2483 let ptr = UNINIT.as_ptr(); 2484 assert_eq!( 2485 ::core::mem::size_of::<pallas_ec_aff>(), 2486 64usize, 2487 concat!("Size of: ", stringify!(pallas_ec_aff)) 2488 ); 2489 assert_eq!( 2490 ::core::mem::align_of::<pallas_ec_aff>(), 2491 8usize, 2492 concat!("Alignment of ", stringify!(pallas_ec_aff)) 2493 ); 2494 assert_eq!( 2495 unsafe { ::core::ptr::addr_of!((*ptr).x) as usize - ptr as usize }, 2496 0usize, 2497 concat!( 2498 "Offset of field: ", 2499 stringify!(pallas_ec_aff), 2500 "::", 2501 stringify!(x) 2502 ) 2503 ); 2504 assert_eq!( 2505 unsafe { ::core::ptr::addr_of!((*ptr).y) as usize - ptr as usize }, 2506 32usize, 2507 concat!( 2508 "Offset of field: ", 2509 stringify!(pallas_ec_aff), 2510 "::", 2511 stringify!(y) 2512 ) 2513 ); 2514 } 2515 #[repr(C)] 2516 #[derive(Copy, Clone)] 2517 pub struct pallas_ec_jac { 2518 x: pallas_fp, 2519 y: pallas_fp, 2520 z: pallas_fp, 2521 } 2522 #[test] 2523 fn bindgen_test_layout_pallas_ec_jac() { 2524 const UNINIT: ::core::mem::MaybeUninit<pallas_ec_jac> = ::core::mem::MaybeUninit::uninit(); 2525 let ptr = UNINIT.as_ptr(); 2526 assert_eq!( 2527 ::core::mem::size_of::<pallas_ec_jac>(), 2528 96usize, 2529 concat!("Size of: ", stringify!(pallas_ec_jac)) 2530 ); 2531 assert_eq!( 2532 ::core::mem::align_of::<pallas_ec_jac>(), 2533 8usize, 2534 concat!("Alignment of ", stringify!(pallas_ec_jac)) 2535 ); 2536 assert_eq!( 2537 unsafe { ::core::ptr::addr_of!((*ptr).x) as usize - ptr as usize }, 2538 0usize, 2539 concat!( 2540 "Offset of field: ", 2541 stringify!(pallas_ec_jac), 2542 "::", 2543 stringify!(x) 2544 ) 2545 ); 2546 assert_eq!( 2547 unsafe { ::core::ptr::addr_of!((*ptr).y) as usize - ptr as usize }, 2548 32usize, 2549 concat!( 2550 "Offset of field: ", 2551 stringify!(pallas_ec_jac), 2552 "::", 2553 stringify!(y) 2554 ) 2555 ); 2556 assert_eq!( 2557 unsafe { ::core::ptr::addr_of!((*ptr).z) as usize - ptr as usize }, 2558 64usize, 2559 concat!( 2560 "Offset of field: ", 2561 stringify!(pallas_ec_jac), 2562 "::", 2563 stringify!(z) 2564 ) 2565 ); 2566 } 2567 #[repr(C)] 2568 #[derive(Copy, Clone)] 2569 pub struct pallas_ec_prj { 2570 x: pallas_fp, 2571 y: pallas_fp, 2572 z: pallas_fp, 2573 } 2574 #[test] 2575 fn bindgen_test_layout_pallas_ec_prj() { 2576 const UNINIT: ::core::mem::MaybeUninit<pallas_ec_prj> = ::core::mem::MaybeUninit::uninit(); 2577 let ptr = UNINIT.as_ptr(); 2578 assert_eq!( 2579 ::core::mem::size_of::<pallas_ec_prj>(), 2580 96usize, 2581 concat!("Size of: ", stringify!(pallas_ec_prj)) 2582 ); 2583 assert_eq!( 2584 ::core::mem::align_of::<pallas_ec_prj>(), 2585 8usize, 2586 concat!("Alignment of ", stringify!(pallas_ec_prj)) 2587 ); 2588 assert_eq!( 2589 unsafe { ::core::ptr::addr_of!((*ptr).x) as usize - ptr as usize }, 2590 0usize, 2591 concat!( 2592 "Offset of field: ", 2593 stringify!(pallas_ec_prj), 2594 "::", 2595 stringify!(x) 2596 ) 2597 ); 2598 assert_eq!( 2599 unsafe { ::core::ptr::addr_of!((*ptr).y) as usize - ptr as usize }, 2600 32usize, 2601 concat!( 2602 "Offset of field: ", 2603 stringify!(pallas_ec_prj), 2604 "::", 2605 stringify!(y) 2606 ) 2607 ); 2608 assert_eq!( 2609 unsafe { ::core::ptr::addr_of!((*ptr).z) as usize - ptr as usize }, 2610 64usize, 2611 concat!( 2612 "Offset of field: ", 2613 stringify!(pallas_ec_prj), 2614 "::", 2615 stringify!(z) 2616 ) 2617 ); 2618 } 2619 extern "C" { 2620 #[must_use] 2621 pub fn ctt_pallas_fr_unmarshalBE(dst: *mut pallas_fr, src: *const byte, src_len: isize) 2622 -> bool; 2623 } 2624 extern "C" { 2625 #[must_use] 2626 pub fn ctt_pallas_fr_marshalBE(dst: *mut byte, dst_len: isize, src: *const pallas_fr) -> bool; 2627 } 2628 extern "C" { 2629 pub fn ctt_pallas_fr_is_eq(a: *const pallas_fr, b: *const pallas_fr) -> secret_bool; 2630 } 2631 extern "C" { 2632 pub fn ctt_pallas_fr_is_zero(a: *const pallas_fr) -> secret_bool; 2633 } 2634 extern "C" { 2635 pub fn ctt_pallas_fr_is_one(a: *const pallas_fr) -> secret_bool; 2636 } 2637 extern "C" { 2638 pub fn ctt_pallas_fr_is_minus_one(a: *const pallas_fr) -> secret_bool; 2639 } 2640 extern "C" { 2641 pub fn ctt_pallas_fr_set_zero(a: *mut pallas_fr); 2642 } 2643 extern "C" { 2644 pub fn ctt_pallas_fr_set_one(a: *mut pallas_fr); 2645 } 2646 extern "C" { 2647 pub fn ctt_pallas_fr_set_minus_one(a: *mut pallas_fr); 2648 } 2649 extern "C" { 2650 pub fn ctt_pallas_fr_neg(r: *mut pallas_fr, a: *const pallas_fr); 2651 } 2652 extern "C" { 2653 pub fn ctt_pallas_fr_neg_in_place(a: *mut pallas_fr); 2654 } 2655 extern "C" { 2656 pub fn ctt_pallas_fr_sum(r: *mut pallas_fr, a: *const pallas_fr, b: *const pallas_fr); 2657 } 2658 extern "C" { 2659 pub fn ctt_pallas_fr_add_in_place(a: *mut pallas_fr, b: *const pallas_fr); 2660 } 2661 extern "C" { 2662 pub fn ctt_pallas_fr_diff(r: *mut pallas_fr, a: *const pallas_fr, b: *const pallas_fr); 2663 } 2664 extern "C" { 2665 pub fn ctt_pallas_fr_sub_in_place(a: *mut pallas_fr, b: *const pallas_fr); 2666 } 2667 extern "C" { 2668 pub fn ctt_pallas_fr_double(r: *mut pallas_fr, a: *const pallas_fr); 2669 } 2670 extern "C" { 2671 pub fn ctt_pallas_fr_double_in_place(a: *mut pallas_fr); 2672 } 2673 extern "C" { 2674 pub fn ctt_pallas_fr_prod(r: *mut pallas_fr, a: *const pallas_fr, b: *const pallas_fr); 2675 } 2676 extern "C" { 2677 pub fn ctt_pallas_fr_mul_in_place(a: *mut pallas_fr, b: *const pallas_fr); 2678 } 2679 extern "C" { 2680 pub fn ctt_pallas_fr_square(r: *mut pallas_fr, a: *const pallas_fr); 2681 } 2682 extern "C" { 2683 pub fn ctt_pallas_fr_square_in_place(a: *mut pallas_fr); 2684 } 2685 extern "C" { 2686 pub fn ctt_pallas_fr_div2(a: *mut pallas_fr); 2687 } 2688 extern "C" { 2689 pub fn ctt_pallas_fr_inv(r: *mut pallas_fr, a: *const pallas_fr); 2690 } 2691 extern "C" { 2692 pub fn ctt_pallas_fr_inv_in_place(a: *mut pallas_fr); 2693 } 2694 extern "C" { 2695 pub fn ctt_pallas_fr_ccopy(a: *mut pallas_fr, b: *const pallas_fr, ctl: secret_bool); 2696 } 2697 extern "C" { 2698 pub fn ctt_pallas_fr_cswap(a: *mut pallas_fr, b: *mut pallas_fr, ctl: secret_bool); 2699 } 2700 extern "C" { 2701 pub fn ctt_pallas_fr_cset_zero(a: *mut pallas_fr, ctl: secret_bool); 2702 } 2703 extern "C" { 2704 pub fn ctt_pallas_fr_cset_one(a: *mut pallas_fr, ctl: secret_bool); 2705 } 2706 extern "C" { 2707 pub fn ctt_pallas_fr_cneg_in_place(a: *mut pallas_fr, ctl: secret_bool); 2708 } 2709 extern "C" { 2710 pub fn ctt_pallas_fr_cadd_in_place(a: *mut pallas_fr, b: *const pallas_fr, ctl: secret_bool); 2711 } 2712 extern "C" { 2713 pub fn ctt_pallas_fr_csub_in_place(a: *mut pallas_fr, b: *const pallas_fr, ctl: secret_bool); 2714 } 2715 extern "C" { 2716 #[must_use] 2717 pub fn ctt_pallas_fp_unmarshalBE(dst: *mut pallas_fp, src: *const byte, src_len: isize) 2718 -> bool; 2719 } 2720 extern "C" { 2721 #[must_use] 2722 pub fn ctt_pallas_fp_marshalBE(dst: *mut byte, dst_len: isize, src: *const pallas_fp) -> bool; 2723 } 2724 extern "C" { 2725 pub fn ctt_pallas_fp_is_eq(a: *const pallas_fp, b: *const pallas_fp) -> secret_bool; 2726 } 2727 extern "C" { 2728 pub fn ctt_pallas_fp_is_zero(a: *const pallas_fp) -> secret_bool; 2729 } 2730 extern "C" { 2731 pub fn ctt_pallas_fp_is_one(a: *const pallas_fp) -> secret_bool; 2732 } 2733 extern "C" { 2734 pub fn ctt_pallas_fp_is_minus_one(a: *const pallas_fp) -> secret_bool; 2735 } 2736 extern "C" { 2737 pub fn ctt_pallas_fp_set_zero(a: *mut pallas_fp); 2738 } 2739 extern "C" { 2740 pub fn ctt_pallas_fp_set_one(a: *mut pallas_fp); 2741 } 2742 extern "C" { 2743 pub fn ctt_pallas_fp_set_minus_one(a: *mut pallas_fp); 2744 } 2745 extern "C" { 2746 pub fn ctt_pallas_fp_neg(r: *mut pallas_fp, a: *const pallas_fp); 2747 } 2748 extern "C" { 2749 pub fn ctt_pallas_fp_neg_in_place(a: *mut pallas_fp); 2750 } 2751 extern "C" { 2752 pub fn ctt_pallas_fp_sum(r: *mut pallas_fp, a: *const pallas_fp, b: *const pallas_fp); 2753 } 2754 extern "C" { 2755 pub fn ctt_pallas_fp_add_in_place(a: *mut pallas_fp, b: *const pallas_fp); 2756 } 2757 extern "C" { 2758 pub fn ctt_pallas_fp_diff(r: *mut pallas_fp, a: *const pallas_fp, b: *const pallas_fp); 2759 } 2760 extern "C" { 2761 pub fn ctt_pallas_fp_sub_in_place(a: *mut pallas_fp, b: *const pallas_fp); 2762 } 2763 extern "C" { 2764 pub fn ctt_pallas_fp_double(r: *mut pallas_fp, a: *const pallas_fp); 2765 } 2766 extern "C" { 2767 pub fn ctt_pallas_fp_double_in_place(a: *mut pallas_fp); 2768 } 2769 extern "C" { 2770 pub fn ctt_pallas_fp_prod(r: *mut pallas_fp, a: *const pallas_fp, b: *const pallas_fp); 2771 } 2772 extern "C" { 2773 pub fn ctt_pallas_fp_mul_in_place(a: *mut pallas_fp, b: *const pallas_fp); 2774 } 2775 extern "C" { 2776 pub fn ctt_pallas_fp_square(r: *mut pallas_fp, a: *const pallas_fp); 2777 } 2778 extern "C" { 2779 pub fn ctt_pallas_fp_square_in_place(a: *mut pallas_fp); 2780 } 2781 extern "C" { 2782 pub fn ctt_pallas_fp_div2(a: *mut pallas_fp); 2783 } 2784 extern "C" { 2785 pub fn ctt_pallas_fp_inv(r: *mut pallas_fp, a: *const pallas_fp); 2786 } 2787 extern "C" { 2788 pub fn ctt_pallas_fp_inv_in_place(a: *mut pallas_fp); 2789 } 2790 extern "C" { 2791 pub fn ctt_pallas_fp_ccopy(a: *mut pallas_fp, b: *const pallas_fp, ctl: secret_bool); 2792 } 2793 extern "C" { 2794 pub fn ctt_pallas_fp_cswap(a: *mut pallas_fp, b: *mut pallas_fp, ctl: secret_bool); 2795 } 2796 extern "C" { 2797 pub fn ctt_pallas_fp_cset_zero(a: *mut pallas_fp, ctl: secret_bool); 2798 } 2799 extern "C" { 2800 pub fn ctt_pallas_fp_cset_one(a: *mut pallas_fp, ctl: secret_bool); 2801 } 2802 extern "C" { 2803 pub fn ctt_pallas_fp_cneg_in_place(a: *mut pallas_fp, ctl: secret_bool); 2804 } 2805 extern "C" { 2806 pub fn ctt_pallas_fp_cadd_in_place(a: *mut pallas_fp, b: *const pallas_fp, ctl: secret_bool); 2807 } 2808 extern "C" { 2809 pub fn ctt_pallas_fp_csub_in_place(a: *mut pallas_fp, b: *const pallas_fp, ctl: secret_bool); 2810 } 2811 extern "C" { 2812 pub fn ctt_pallas_fp_is_square(a: *const pallas_fp) -> secret_bool; 2813 } 2814 extern "C" { 2815 pub fn ctt_pallas_fp_invsqrt(r: *mut pallas_fp, a: *const pallas_fp); 2816 } 2817 extern "C" { 2818 pub fn ctt_pallas_fp_invsqrt_in_place(r: *mut pallas_fp, a: *const pallas_fp) -> secret_bool; 2819 } 2820 extern "C" { 2821 pub fn ctt_pallas_fp_sqrt_in_place(a: *mut pallas_fp); 2822 } 2823 extern "C" { 2824 pub fn ctt_pallas_fp_sqrt_if_square_in_place(a: *mut pallas_fp) -> secret_bool; 2825 } 2826 extern "C" { 2827 pub fn ctt_pallas_fp_sqrt_invsqrt( 2828 sqrt: *mut pallas_fp, 2829 invsqrt: *mut pallas_fp, 2830 a: *const pallas_fp, 2831 ); 2832 } 2833 extern "C" { 2834 pub fn ctt_pallas_fp_sqrt_invsqrt_if_square( 2835 sqrt: *mut pallas_fp, 2836 invsqrt: *mut pallas_fp, 2837 a: *const pallas_fp, 2838 ) -> secret_bool; 2839 } 2840 extern "C" { 2841 pub fn ctt_pallas_fp_sqrt_ratio_if_square( 2842 r: *mut pallas_fp, 2843 u: *const pallas_fp, 2844 v: *const pallas_fp, 2845 ) -> secret_bool; 2846 } 2847 extern "C" { 2848 pub fn ctt_pallas_ec_aff_is_eq(P: *const pallas_ec_aff, Q: *const pallas_ec_aff) 2849 -> secret_bool; 2850 } 2851 extern "C" { 2852 pub fn ctt_pallas_ec_aff_is_inf(P: *const pallas_ec_aff) -> secret_bool; 2853 } 2854 extern "C" { 2855 pub fn ctt_pallas_ec_aff_set_inf(P: *mut pallas_ec_aff); 2856 } 2857 extern "C" { 2858 pub fn ctt_pallas_ec_aff_ccopy( 2859 P: *mut pallas_ec_aff, 2860 Q: *const pallas_ec_aff, 2861 ctl: secret_bool, 2862 ); 2863 } 2864 extern "C" { 2865 pub fn ctt_pallas_ec_aff_is_on_curve(x: *const pallas_fp, y: *const pallas_fp) -> secret_bool; 2866 } 2867 extern "C" { 2868 pub fn ctt_pallas_ec_aff_neg(P: *mut pallas_ec_aff, Q: *const pallas_ec_aff); 2869 } 2870 extern "C" { 2871 pub fn ctt_pallas_ec_aff_neg_in_place(P: *mut pallas_ec_aff); 2872 } 2873 extern "C" { 2874 pub fn ctt_pallas_ec_jac_is_eq(P: *const pallas_ec_jac, Q: *const pallas_ec_jac) 2875 -> secret_bool; 2876 } 2877 extern "C" { 2878 pub fn ctt_pallas_ec_jac_is_inf(P: *const pallas_ec_jac) -> secret_bool; 2879 } 2880 extern "C" { 2881 pub fn ctt_pallas_ec_jac_set_inf(P: *mut pallas_ec_jac); 2882 } 2883 extern "C" { 2884 pub fn ctt_pallas_ec_jac_ccopy( 2885 P: *mut pallas_ec_jac, 2886 Q: *const pallas_ec_jac, 2887 ctl: secret_bool, 2888 ); 2889 } 2890 extern "C" { 2891 pub fn ctt_pallas_ec_jac_neg(P: *mut pallas_ec_jac, Q: *const pallas_ec_jac); 2892 } 2893 extern "C" { 2894 pub fn ctt_pallas_ec_jac_neg_in_place(P: *mut pallas_ec_jac); 2895 } 2896 extern "C" { 2897 pub fn ctt_pallas_ec_jac_cneg_in_place(P: *mut pallas_ec_jac, ctl: secret_bool); 2898 } 2899 extern "C" { 2900 pub fn ctt_pallas_ec_jac_sum( 2901 r: *mut pallas_ec_jac, 2902 P: *const pallas_ec_jac, 2903 Q: *const pallas_ec_jac, 2904 ); 2905 } 2906 extern "C" { 2907 pub fn ctt_pallas_ec_jac_add_in_place(P: *mut pallas_ec_jac, Q: *const pallas_ec_jac); 2908 } 2909 extern "C" { 2910 pub fn ctt_pallas_ec_jac_diff( 2911 r: *mut pallas_ec_jac, 2912 P: *const pallas_ec_jac, 2913 Q: *const pallas_ec_jac, 2914 ); 2915 } 2916 extern "C" { 2917 pub fn ctt_pallas_ec_jac_double(r: *mut pallas_ec_jac, P: *const pallas_ec_jac); 2918 } 2919 extern "C" { 2920 pub fn ctt_pallas_ec_jac_double_in_place(P: *mut pallas_ec_jac); 2921 } 2922 extern "C" { 2923 pub fn ctt_pallas_ec_jac_affine(dst: *mut pallas_ec_aff, src: *const pallas_ec_jac); 2924 } 2925 extern "C" { 2926 pub fn ctt_pallas_ec_jac_from_affine(dst: *mut pallas_ec_jac, src: *const pallas_ec_aff); 2927 } 2928 extern "C" { 2929 pub fn ctt_pallas_ec_prj_is_eq(P: *const pallas_ec_prj, Q: *const pallas_ec_prj) 2930 -> secret_bool; 2931 } 2932 extern "C" { 2933 pub fn ctt_pallas_ec_prj_is_inf(P: *const pallas_ec_prj) -> secret_bool; 2934 } 2935 extern "C" { 2936 pub fn ctt_pallas_ec_prj_set_inf(P: *mut pallas_ec_prj); 2937 } 2938 extern "C" { 2939 pub fn ctt_pallas_ec_prj_ccopy( 2940 P: *mut pallas_ec_prj, 2941 Q: *const pallas_ec_prj, 2942 ctl: secret_bool, 2943 ); 2944 } 2945 extern "C" { 2946 pub fn ctt_pallas_ec_prj_neg(P: *mut pallas_ec_prj, Q: *const pallas_ec_prj); 2947 } 2948 extern "C" { 2949 pub fn ctt_pallas_ec_prj_neg_in_place(P: *mut pallas_ec_prj); 2950 } 2951 extern "C" { 2952 pub fn ctt_pallas_ec_prj_cneg_in_place(P: *mut pallas_ec_prj, ctl: secret_bool); 2953 } 2954 extern "C" { 2955 pub fn ctt_pallas_ec_prj_sum( 2956 r: *mut pallas_ec_prj, 2957 P: *const pallas_ec_prj, 2958 Q: *const pallas_ec_prj, 2959 ); 2960 } 2961 extern "C" { 2962 pub fn ctt_pallas_ec_prj_add_in_place(P: *mut pallas_ec_prj, Q: *const pallas_ec_prj); 2963 } 2964 extern "C" { 2965 pub fn ctt_pallas_ec_prj_diff( 2966 r: *mut pallas_ec_prj, 2967 P: *const pallas_ec_prj, 2968 Q: *const pallas_ec_prj, 2969 ); 2970 } 2971 extern "C" { 2972 pub fn ctt_pallas_ec_prj_double(r: *mut pallas_ec_prj, P: *const pallas_ec_prj); 2973 } 2974 extern "C" { 2975 pub fn ctt_pallas_ec_prj_double_in_place(P: *mut pallas_ec_prj); 2976 } 2977 extern "C" { 2978 pub fn ctt_pallas_ec_prj_affine(dst: *mut pallas_ec_aff, src: *const pallas_ec_prj); 2979 } 2980 extern "C" { 2981 pub fn ctt_pallas_ec_prj_from_affine(dst: *mut pallas_ec_prj, src: *const pallas_ec_aff); 2982 } 2983 #[repr(C)] 2984 #[derive(Copy, Clone)] 2985 pub struct vesta_fr { 2986 limbs: [secret_word; 4usize], 2987 } 2988 #[test] 2989 fn bindgen_test_layout_vesta_fr() { 2990 const UNINIT: ::core::mem::MaybeUninit<vesta_fr> = ::core::mem::MaybeUninit::uninit(); 2991 let ptr = UNINIT.as_ptr(); 2992 assert_eq!( 2993 ::core::mem::size_of::<vesta_fr>(), 2994 32usize, 2995 concat!("Size of: ", stringify!(vesta_fr)) 2996 ); 2997 assert_eq!( 2998 ::core::mem::align_of::<vesta_fr>(), 2999 8usize, 3000 concat!("Alignment of ", stringify!(vesta_fr)) 3001 ); 3002 assert_eq!( 3003 unsafe { ::core::ptr::addr_of!((*ptr).limbs) as usize - ptr as usize }, 3004 0usize, 3005 concat!( 3006 "Offset of field: ", 3007 stringify!(vesta_fr), 3008 "::", 3009 stringify!(limbs) 3010 ) 3011 ); 3012 } 3013 #[repr(C)] 3014 #[derive(Copy, Clone)] 3015 pub struct vesta_fp { 3016 limbs: [secret_word; 4usize], 3017 } 3018 #[test] 3019 fn bindgen_test_layout_vesta_fp() { 3020 const UNINIT: ::core::mem::MaybeUninit<vesta_fp> = ::core::mem::MaybeUninit::uninit(); 3021 let ptr = UNINIT.as_ptr(); 3022 assert_eq!( 3023 ::core::mem::size_of::<vesta_fp>(), 3024 32usize, 3025 concat!("Size of: ", stringify!(vesta_fp)) 3026 ); 3027 assert_eq!( 3028 ::core::mem::align_of::<vesta_fp>(), 3029 8usize, 3030 concat!("Alignment of ", stringify!(vesta_fp)) 3031 ); 3032 assert_eq!( 3033 unsafe { ::core::ptr::addr_of!((*ptr).limbs) as usize - ptr as usize }, 3034 0usize, 3035 concat!( 3036 "Offset of field: ", 3037 stringify!(vesta_fp), 3038 "::", 3039 stringify!(limbs) 3040 ) 3041 ); 3042 } 3043 #[repr(C)] 3044 #[derive(Copy, Clone)] 3045 pub struct vesta_ec_aff { 3046 x: vesta_fp, 3047 y: vesta_fp, 3048 } 3049 #[test] 3050 fn bindgen_test_layout_vesta_ec_aff() { 3051 const UNINIT: ::core::mem::MaybeUninit<vesta_ec_aff> = ::core::mem::MaybeUninit::uninit(); 3052 let ptr = UNINIT.as_ptr(); 3053 assert_eq!( 3054 ::core::mem::size_of::<vesta_ec_aff>(), 3055 64usize, 3056 concat!("Size of: ", stringify!(vesta_ec_aff)) 3057 ); 3058 assert_eq!( 3059 ::core::mem::align_of::<vesta_ec_aff>(), 3060 8usize, 3061 concat!("Alignment of ", stringify!(vesta_ec_aff)) 3062 ); 3063 assert_eq!( 3064 unsafe { ::core::ptr::addr_of!((*ptr).x) as usize - ptr as usize }, 3065 0usize, 3066 concat!( 3067 "Offset of field: ", 3068 stringify!(vesta_ec_aff), 3069 "::", 3070 stringify!(x) 3071 ) 3072 ); 3073 assert_eq!( 3074 unsafe { ::core::ptr::addr_of!((*ptr).y) as usize - ptr as usize }, 3075 32usize, 3076 concat!( 3077 "Offset of field: ", 3078 stringify!(vesta_ec_aff), 3079 "::", 3080 stringify!(y) 3081 ) 3082 ); 3083 } 3084 #[repr(C)] 3085 #[derive(Copy, Clone)] 3086 pub struct vesta_ec_jac { 3087 x: vesta_fp, 3088 y: vesta_fp, 3089 z: vesta_fp, 3090 } 3091 #[test] 3092 fn bindgen_test_layout_vesta_ec_jac() { 3093 const UNINIT: ::core::mem::MaybeUninit<vesta_ec_jac> = ::core::mem::MaybeUninit::uninit(); 3094 let ptr = UNINIT.as_ptr(); 3095 assert_eq!( 3096 ::core::mem::size_of::<vesta_ec_jac>(), 3097 96usize, 3098 concat!("Size of: ", stringify!(vesta_ec_jac)) 3099 ); 3100 assert_eq!( 3101 ::core::mem::align_of::<vesta_ec_jac>(), 3102 8usize, 3103 concat!("Alignment of ", stringify!(vesta_ec_jac)) 3104 ); 3105 assert_eq!( 3106 unsafe { ::core::ptr::addr_of!((*ptr).x) as usize - ptr as usize }, 3107 0usize, 3108 concat!( 3109 "Offset of field: ", 3110 stringify!(vesta_ec_jac), 3111 "::", 3112 stringify!(x) 3113 ) 3114 ); 3115 assert_eq!( 3116 unsafe { ::core::ptr::addr_of!((*ptr).y) as usize - ptr as usize }, 3117 32usize, 3118 concat!( 3119 "Offset of field: ", 3120 stringify!(vesta_ec_jac), 3121 "::", 3122 stringify!(y) 3123 ) 3124 ); 3125 assert_eq!( 3126 unsafe { ::core::ptr::addr_of!((*ptr).z) as usize - ptr as usize }, 3127 64usize, 3128 concat!( 3129 "Offset of field: ", 3130 stringify!(vesta_ec_jac), 3131 "::", 3132 stringify!(z) 3133 ) 3134 ); 3135 } 3136 #[repr(C)] 3137 #[derive(Copy, Clone)] 3138 pub struct vesta_ec_prj { 3139 x: vesta_fp, 3140 y: vesta_fp, 3141 z: vesta_fp, 3142 } 3143 #[test] 3144 fn bindgen_test_layout_vesta_ec_prj() { 3145 const UNINIT: ::core::mem::MaybeUninit<vesta_ec_prj> = ::core::mem::MaybeUninit::uninit(); 3146 let ptr = UNINIT.as_ptr(); 3147 assert_eq!( 3148 ::core::mem::size_of::<vesta_ec_prj>(), 3149 96usize, 3150 concat!("Size of: ", stringify!(vesta_ec_prj)) 3151 ); 3152 assert_eq!( 3153 ::core::mem::align_of::<vesta_ec_prj>(), 3154 8usize, 3155 concat!("Alignment of ", stringify!(vesta_ec_prj)) 3156 ); 3157 assert_eq!( 3158 unsafe { ::core::ptr::addr_of!((*ptr).x) as usize - ptr as usize }, 3159 0usize, 3160 concat!( 3161 "Offset of field: ", 3162 stringify!(vesta_ec_prj), 3163 "::", 3164 stringify!(x) 3165 ) 3166 ); 3167 assert_eq!( 3168 unsafe { ::core::ptr::addr_of!((*ptr).y) as usize - ptr as usize }, 3169 32usize, 3170 concat!( 3171 "Offset of field: ", 3172 stringify!(vesta_ec_prj), 3173 "::", 3174 stringify!(y) 3175 ) 3176 ); 3177 assert_eq!( 3178 unsafe { ::core::ptr::addr_of!((*ptr).z) as usize - ptr as usize }, 3179 64usize, 3180 concat!( 3181 "Offset of field: ", 3182 stringify!(vesta_ec_prj), 3183 "::", 3184 stringify!(z) 3185 ) 3186 ); 3187 } 3188 extern "C" { 3189 #[must_use] 3190 pub fn ctt_vesta_fr_unmarshalBE(dst: *mut vesta_fr, src: *const byte, src_len: isize) -> bool; 3191 } 3192 extern "C" { 3193 #[must_use] 3194 pub fn ctt_vesta_fr_marshalBE(dst: *mut byte, dst_len: isize, src: *const vesta_fr) -> bool; 3195 } 3196 extern "C" { 3197 pub fn ctt_vesta_fr_is_eq(a: *const vesta_fr, b: *const vesta_fr) -> secret_bool; 3198 } 3199 extern "C" { 3200 pub fn ctt_vesta_fr_is_zero(a: *const vesta_fr) -> secret_bool; 3201 } 3202 extern "C" { 3203 pub fn ctt_vesta_fr_is_one(a: *const vesta_fr) -> secret_bool; 3204 } 3205 extern "C" { 3206 pub fn ctt_vesta_fr_is_minus_one(a: *const vesta_fr) -> secret_bool; 3207 } 3208 extern "C" { 3209 pub fn ctt_vesta_fr_set_zero(a: *mut vesta_fr); 3210 } 3211 extern "C" { 3212 pub fn ctt_vesta_fr_set_one(a: *mut vesta_fr); 3213 } 3214 extern "C" { 3215 pub fn ctt_vesta_fr_set_minus_one(a: *mut vesta_fr); 3216 } 3217 extern "C" { 3218 pub fn ctt_vesta_fr_neg(r: *mut vesta_fr, a: *const vesta_fr); 3219 } 3220 extern "C" { 3221 pub fn ctt_vesta_fr_neg_in_place(a: *mut vesta_fr); 3222 } 3223 extern "C" { 3224 pub fn ctt_vesta_fr_sum(r: *mut vesta_fr, a: *const vesta_fr, b: *const vesta_fr); 3225 } 3226 extern "C" { 3227 pub fn ctt_vesta_fr_add_in_place(a: *mut vesta_fr, b: *const vesta_fr); 3228 } 3229 extern "C" { 3230 pub fn ctt_vesta_fr_diff(r: *mut vesta_fr, a: *const vesta_fr, b: *const vesta_fr); 3231 } 3232 extern "C" { 3233 pub fn ctt_vesta_fr_sub_in_place(a: *mut vesta_fr, b: *const vesta_fr); 3234 } 3235 extern "C" { 3236 pub fn ctt_vesta_fr_double(r: *mut vesta_fr, a: *const vesta_fr); 3237 } 3238 extern "C" { 3239 pub fn ctt_vesta_fr_double_in_place(a: *mut vesta_fr); 3240 } 3241 extern "C" { 3242 pub fn ctt_vesta_fr_prod(r: *mut vesta_fr, a: *const vesta_fr, b: *const vesta_fr); 3243 } 3244 extern "C" { 3245 pub fn ctt_vesta_fr_mul_in_place(a: *mut vesta_fr, b: *const vesta_fr); 3246 } 3247 extern "C" { 3248 pub fn ctt_vesta_fr_square(r: *mut vesta_fr, a: *const vesta_fr); 3249 } 3250 extern "C" { 3251 pub fn ctt_vesta_fr_square_in_place(a: *mut vesta_fr); 3252 } 3253 extern "C" { 3254 pub fn ctt_vesta_fr_div2(a: *mut vesta_fr); 3255 } 3256 extern "C" { 3257 pub fn ctt_vesta_fr_inv(r: *mut vesta_fr, a: *const vesta_fr); 3258 } 3259 extern "C" { 3260 pub fn ctt_vesta_fr_inv_in_place(a: *mut vesta_fr); 3261 } 3262 extern "C" { 3263 pub fn ctt_vesta_fr_ccopy(a: *mut vesta_fr, b: *const vesta_fr, ctl: secret_bool); 3264 } 3265 extern "C" { 3266 pub fn ctt_vesta_fr_cswap(a: *mut vesta_fr, b: *mut vesta_fr, ctl: secret_bool); 3267 } 3268 extern "C" { 3269 pub fn ctt_vesta_fr_cset_zero(a: *mut vesta_fr, ctl: secret_bool); 3270 } 3271 extern "C" { 3272 pub fn ctt_vesta_fr_cset_one(a: *mut vesta_fr, ctl: secret_bool); 3273 } 3274 extern "C" { 3275 pub fn ctt_vesta_fr_cneg_in_place(a: *mut vesta_fr, ctl: secret_bool); 3276 } 3277 extern "C" { 3278 pub fn ctt_vesta_fr_cadd_in_place(a: *mut vesta_fr, b: *const vesta_fr, ctl: secret_bool); 3279 } 3280 extern "C" { 3281 pub fn ctt_vesta_fr_csub_in_place(a: *mut vesta_fr, b: *const vesta_fr, ctl: secret_bool); 3282 } 3283 extern "C" { 3284 #[must_use] 3285 pub fn ctt_vesta_fp_unmarshalBE(dst: *mut vesta_fp, src: *const byte, src_len: isize) -> bool; 3286 } 3287 extern "C" { 3288 #[must_use] 3289 pub fn ctt_vesta_fp_marshalBE(dst: *mut byte, dst_len: isize, src: *const vesta_fp) -> bool; 3290 } 3291 extern "C" { 3292 pub fn ctt_vesta_fp_is_eq(a: *const vesta_fp, b: *const vesta_fp) -> secret_bool; 3293 } 3294 extern "C" { 3295 pub fn ctt_vesta_fp_is_zero(a: *const vesta_fp) -> secret_bool; 3296 } 3297 extern "C" { 3298 pub fn ctt_vesta_fp_is_one(a: *const vesta_fp) -> secret_bool; 3299 } 3300 extern "C" { 3301 pub fn ctt_vesta_fp_is_minus_one(a: *const vesta_fp) -> secret_bool; 3302 } 3303 extern "C" { 3304 pub fn ctt_vesta_fp_set_zero(a: *mut vesta_fp); 3305 } 3306 extern "C" { 3307 pub fn ctt_vesta_fp_set_one(a: *mut vesta_fp); 3308 } 3309 extern "C" { 3310 pub fn ctt_vesta_fp_set_minus_one(a: *mut vesta_fp); 3311 } 3312 extern "C" { 3313 pub fn ctt_vesta_fp_neg(r: *mut vesta_fp, a: *const vesta_fp); 3314 } 3315 extern "C" { 3316 pub fn ctt_vesta_fp_neg_in_place(a: *mut vesta_fp); 3317 } 3318 extern "C" { 3319 pub fn ctt_vesta_fp_sum(r: *mut vesta_fp, a: *const vesta_fp, b: *const vesta_fp); 3320 } 3321 extern "C" { 3322 pub fn ctt_vesta_fp_add_in_place(a: *mut vesta_fp, b: *const vesta_fp); 3323 } 3324 extern "C" { 3325 pub fn ctt_vesta_fp_diff(r: *mut vesta_fp, a: *const vesta_fp, b: *const vesta_fp); 3326 } 3327 extern "C" { 3328 pub fn ctt_vesta_fp_sub_in_place(a: *mut vesta_fp, b: *const vesta_fp); 3329 } 3330 extern "C" { 3331 pub fn ctt_vesta_fp_double(r: *mut vesta_fp, a: *const vesta_fp); 3332 } 3333 extern "C" { 3334 pub fn ctt_vesta_fp_double_in_place(a: *mut vesta_fp); 3335 } 3336 extern "C" { 3337 pub fn ctt_vesta_fp_prod(r: *mut vesta_fp, a: *const vesta_fp, b: *const vesta_fp); 3338 } 3339 extern "C" { 3340 pub fn ctt_vesta_fp_mul_in_place(a: *mut vesta_fp, b: *const vesta_fp); 3341 } 3342 extern "C" { 3343 pub fn ctt_vesta_fp_square(r: *mut vesta_fp, a: *const vesta_fp); 3344 } 3345 extern "C" { 3346 pub fn ctt_vesta_fp_square_in_place(a: *mut vesta_fp); 3347 } 3348 extern "C" { 3349 pub fn ctt_vesta_fp_div2(a: *mut vesta_fp); 3350 } 3351 extern "C" { 3352 pub fn ctt_vesta_fp_inv(r: *mut vesta_fp, a: *const vesta_fp); 3353 } 3354 extern "C" { 3355 pub fn ctt_vesta_fp_inv_in_place(a: *mut vesta_fp); 3356 } 3357 extern "C" { 3358 pub fn ctt_vesta_fp_ccopy(a: *mut vesta_fp, b: *const vesta_fp, ctl: secret_bool); 3359 } 3360 extern "C" { 3361 pub fn ctt_vesta_fp_cswap(a: *mut vesta_fp, b: *mut vesta_fp, ctl: secret_bool); 3362 } 3363 extern "C" { 3364 pub fn ctt_vesta_fp_cset_zero(a: *mut vesta_fp, ctl: secret_bool); 3365 } 3366 extern "C" { 3367 pub fn ctt_vesta_fp_cset_one(a: *mut vesta_fp, ctl: secret_bool); 3368 } 3369 extern "C" { 3370 pub fn ctt_vesta_fp_cneg_in_place(a: *mut vesta_fp, ctl: secret_bool); 3371 } 3372 extern "C" { 3373 pub fn ctt_vesta_fp_cadd_in_place(a: *mut vesta_fp, b: *const vesta_fp, ctl: secret_bool); 3374 } 3375 extern "C" { 3376 pub fn ctt_vesta_fp_csub_in_place(a: *mut vesta_fp, b: *const vesta_fp, ctl: secret_bool); 3377 } 3378 extern "C" { 3379 pub fn ctt_vesta_fp_is_square(a: *const vesta_fp) -> secret_bool; 3380 } 3381 extern "C" { 3382 pub fn ctt_vesta_fp_invsqrt(r: *mut vesta_fp, a: *const vesta_fp); 3383 } 3384 extern "C" { 3385 pub fn ctt_vesta_fp_invsqrt_in_place(r: *mut vesta_fp, a: *const vesta_fp) -> secret_bool; 3386 } 3387 extern "C" { 3388 pub fn ctt_vesta_fp_sqrt_in_place(a: *mut vesta_fp); 3389 } 3390 extern "C" { 3391 pub fn ctt_vesta_fp_sqrt_if_square_in_place(a: *mut vesta_fp) -> secret_bool; 3392 } 3393 extern "C" { 3394 pub fn ctt_vesta_fp_sqrt_invsqrt( 3395 sqrt: *mut vesta_fp, 3396 invsqrt: *mut vesta_fp, 3397 a: *const vesta_fp, 3398 ); 3399 } 3400 extern "C" { 3401 pub fn ctt_vesta_fp_sqrt_invsqrt_if_square( 3402 sqrt: *mut vesta_fp, 3403 invsqrt: *mut vesta_fp, 3404 a: *const vesta_fp, 3405 ) -> secret_bool; 3406 } 3407 extern "C" { 3408 pub fn ctt_vesta_fp_sqrt_ratio_if_square( 3409 r: *mut vesta_fp, 3410 u: *const vesta_fp, 3411 v: *const vesta_fp, 3412 ) -> secret_bool; 3413 } 3414 extern "C" { 3415 pub fn ctt_vesta_ec_aff_is_eq(P: *const vesta_ec_aff, Q: *const vesta_ec_aff) -> secret_bool; 3416 } 3417 extern "C" { 3418 pub fn ctt_vesta_ec_aff_is_inf(P: *const vesta_ec_aff) -> secret_bool; 3419 } 3420 extern "C" { 3421 pub fn ctt_vesta_ec_aff_set_inf(P: *mut vesta_ec_aff); 3422 } 3423 extern "C" { 3424 pub fn ctt_vesta_ec_aff_ccopy(P: *mut vesta_ec_aff, Q: *const vesta_ec_aff, ctl: secret_bool); 3425 } 3426 extern "C" { 3427 pub fn ctt_vesta_ec_aff_is_on_curve(x: *const vesta_fp, y: *const vesta_fp) -> secret_bool; 3428 } 3429 extern "C" { 3430 pub fn ctt_vesta_ec_aff_neg(P: *mut vesta_ec_aff, Q: *const vesta_ec_aff); 3431 } 3432 extern "C" { 3433 pub fn ctt_vesta_ec_aff_neg_in_place(P: *mut vesta_ec_aff); 3434 } 3435 extern "C" { 3436 pub fn ctt_vesta_ec_jac_is_eq(P: *const vesta_ec_jac, Q: *const vesta_ec_jac) -> secret_bool; 3437 } 3438 extern "C" { 3439 pub fn ctt_vesta_ec_jac_is_inf(P: *const vesta_ec_jac) -> secret_bool; 3440 } 3441 extern "C" { 3442 pub fn ctt_vesta_ec_jac_set_inf(P: *mut vesta_ec_jac); 3443 } 3444 extern "C" { 3445 pub fn ctt_vesta_ec_jac_ccopy(P: *mut vesta_ec_jac, Q: *const vesta_ec_jac, ctl: secret_bool); 3446 } 3447 extern "C" { 3448 pub fn ctt_vesta_ec_jac_neg(P: *mut vesta_ec_jac, Q: *const vesta_ec_jac); 3449 } 3450 extern "C" { 3451 pub fn ctt_vesta_ec_jac_neg_in_place(P: *mut vesta_ec_jac); 3452 } 3453 extern "C" { 3454 pub fn ctt_vesta_ec_jac_cneg_in_place(P: *mut vesta_ec_jac, ctl: secret_bool); 3455 } 3456 extern "C" { 3457 pub fn ctt_vesta_ec_jac_sum( 3458 r: *mut vesta_ec_jac, 3459 P: *const vesta_ec_jac, 3460 Q: *const vesta_ec_jac, 3461 ); 3462 } 3463 extern "C" { 3464 pub fn ctt_vesta_ec_jac_add_in_place(P: *mut vesta_ec_jac, Q: *const vesta_ec_jac); 3465 } 3466 extern "C" { 3467 pub fn ctt_vesta_ec_jac_diff( 3468 r: *mut vesta_ec_jac, 3469 P: *const vesta_ec_jac, 3470 Q: *const vesta_ec_jac, 3471 ); 3472 } 3473 extern "C" { 3474 pub fn ctt_vesta_ec_jac_double(r: *mut vesta_ec_jac, P: *const vesta_ec_jac); 3475 } 3476 extern "C" { 3477 pub fn ctt_vesta_ec_jac_double_in_place(P: *mut vesta_ec_jac); 3478 } 3479 extern "C" { 3480 pub fn ctt_vesta_ec_jac_affine(dst: *mut vesta_ec_aff, src: *const vesta_ec_jac); 3481 } 3482 extern "C" { 3483 pub fn ctt_vesta_ec_jac_from_affine(dst: *mut vesta_ec_jac, src: *const vesta_ec_aff); 3484 } 3485 extern "C" { 3486 pub fn ctt_vesta_ec_prj_is_eq(P: *const vesta_ec_prj, Q: *const vesta_ec_prj) -> secret_bool; 3487 } 3488 extern "C" { 3489 pub fn ctt_vesta_ec_prj_is_inf(P: *const vesta_ec_prj) -> secret_bool; 3490 } 3491 extern "C" { 3492 pub fn ctt_vesta_ec_prj_set_inf(P: *mut vesta_ec_prj); 3493 } 3494 extern "C" { 3495 pub fn ctt_vesta_ec_prj_ccopy(P: *mut vesta_ec_prj, Q: *const vesta_ec_prj, ctl: secret_bool); 3496 } 3497 extern "C" { 3498 pub fn ctt_vesta_ec_prj_neg(P: *mut vesta_ec_prj, Q: *const vesta_ec_prj); 3499 } 3500 extern "C" { 3501 pub fn ctt_vesta_ec_prj_neg_in_place(P: *mut vesta_ec_prj); 3502 } 3503 extern "C" { 3504 pub fn ctt_vesta_ec_prj_cneg_in_place(P: *mut vesta_ec_prj, ctl: secret_bool); 3505 } 3506 extern "C" { 3507 pub fn ctt_vesta_ec_prj_sum( 3508 r: *mut vesta_ec_prj, 3509 P: *const vesta_ec_prj, 3510 Q: *const vesta_ec_prj, 3511 ); 3512 } 3513 extern "C" { 3514 pub fn ctt_vesta_ec_prj_add_in_place(P: *mut vesta_ec_prj, Q: *const vesta_ec_prj); 3515 } 3516 extern "C" { 3517 pub fn ctt_vesta_ec_prj_diff( 3518 r: *mut vesta_ec_prj, 3519 P: *const vesta_ec_prj, 3520 Q: *const vesta_ec_prj, 3521 ); 3522 } 3523 extern "C" { 3524 pub fn ctt_vesta_ec_prj_double(r: *mut vesta_ec_prj, P: *const vesta_ec_prj); 3525 } 3526 extern "C" { 3527 pub fn ctt_vesta_ec_prj_double_in_place(P: *mut vesta_ec_prj); 3528 } 3529 extern "C" { 3530 pub fn ctt_vesta_ec_prj_affine(dst: *mut vesta_ec_aff, src: *const vesta_ec_prj); 3531 } 3532 extern "C" { 3533 pub fn ctt_vesta_ec_prj_from_affine(dst: *mut vesta_ec_prj, src: *const vesta_ec_aff); 3534 } 3535 #[repr(u8)] 3536 #[derive(Copy, Clone, Hash, PartialEq, Eq)] 3537 pub enum ctt_codec_scalar_status { 3538 cttCodecScalar_Success = 0, 3539 cttCodecScalar_Zero = 1, 3540 cttCodecScalar_ScalarLargerThanCurveOrder = 2, 3541 } 3542 #[repr(u8)] 3543 #[derive(Copy, Clone, Hash, PartialEq, Eq)] 3544 pub enum ctt_codec_ecc_status { 3545 cttCodecEcc_Success = 0, 3546 cttCodecEcc_InvalidEncoding = 1, 3547 cttCodecEcc_CoordinateGreaterThanOrEqualModulus = 2, 3548 cttCodecEcc_PointNotOnCurve = 3, 3549 cttCodecEcc_PointNotInSubgroup = 4, 3550 cttCodecEcc_PointAtInfinity = 5, 3551 } 3552 #[repr(C)] 3553 #[derive(Copy, Clone)] 3554 pub struct ctt_eth_bls_fp { 3555 raw: [byte; 48usize], 3556 } 3557 #[test] 3558 fn bindgen_test_layout_ctt_eth_bls_fp() { 3559 const UNINIT: ::core::mem::MaybeUninit<ctt_eth_bls_fp> = ::core::mem::MaybeUninit::uninit(); 3560 let ptr = UNINIT.as_ptr(); 3561 assert_eq!( 3562 ::core::mem::size_of::<ctt_eth_bls_fp>(), 3563 48usize, 3564 concat!("Size of: ", stringify!(ctt_eth_bls_fp)) 3565 ); 3566 assert_eq!( 3567 ::core::mem::align_of::<ctt_eth_bls_fp>(), 3568 1usize, 3569 concat!("Alignment of ", stringify!(ctt_eth_bls_fp)) 3570 ); 3571 assert_eq!( 3572 unsafe { ::core::ptr::addr_of!((*ptr).raw) as usize - ptr as usize }, 3573 0usize, 3574 concat!( 3575 "Offset of field: ", 3576 stringify!(ctt_eth_bls_fp), 3577 "::", 3578 stringify!(raw) 3579 ) 3580 ); 3581 } 3582 #[repr(C)] 3583 #[derive(Copy, Clone)] 3584 pub struct ctt_eth_bls_fp2 { 3585 coords: [ctt_eth_bls_fp; 2usize], 3586 } 3587 #[test] 3588 fn bindgen_test_layout_ctt_eth_bls_fp2() { 3589 const UNINIT: ::core::mem::MaybeUninit<ctt_eth_bls_fp2> = ::core::mem::MaybeUninit::uninit(); 3590 let ptr = UNINIT.as_ptr(); 3591 assert_eq!( 3592 ::core::mem::size_of::<ctt_eth_bls_fp2>(), 3593 96usize, 3594 concat!("Size of: ", stringify!(ctt_eth_bls_fp2)) 3595 ); 3596 assert_eq!( 3597 ::core::mem::align_of::<ctt_eth_bls_fp2>(), 3598 1usize, 3599 concat!("Alignment of ", stringify!(ctt_eth_bls_fp2)) 3600 ); 3601 assert_eq!( 3602 unsafe { ::core::ptr::addr_of!((*ptr).coords) as usize - ptr as usize }, 3603 0usize, 3604 concat!( 3605 "Offset of field: ", 3606 stringify!(ctt_eth_bls_fp2), 3607 "::", 3608 stringify!(coords) 3609 ) 3610 ); 3611 } 3612 #[repr(C)] 3613 #[derive(Copy, Clone)] 3614 pub struct ctt_eth_bls_seckey { 3615 raw: [byte; 32usize], 3616 } 3617 #[test] 3618 fn bindgen_test_layout_ctt_eth_bls_seckey() { 3619 const UNINIT: ::core::mem::MaybeUninit<ctt_eth_bls_seckey> = ::core::mem::MaybeUninit::uninit(); 3620 let ptr = UNINIT.as_ptr(); 3621 assert_eq!( 3622 ::core::mem::size_of::<ctt_eth_bls_seckey>(), 3623 32usize, 3624 concat!("Size of: ", stringify!(ctt_eth_bls_seckey)) 3625 ); 3626 assert_eq!( 3627 ::core::mem::align_of::<ctt_eth_bls_seckey>(), 3628 1usize, 3629 concat!("Alignment of ", stringify!(ctt_eth_bls_seckey)) 3630 ); 3631 assert_eq!( 3632 unsafe { ::core::ptr::addr_of!((*ptr).raw) as usize - ptr as usize }, 3633 0usize, 3634 concat!( 3635 "Offset of field: ", 3636 stringify!(ctt_eth_bls_seckey), 3637 "::", 3638 stringify!(raw) 3639 ) 3640 ); 3641 } 3642 #[repr(C)] 3643 #[derive(Copy, Clone)] 3644 pub struct ctt_eth_bls_pubkey { 3645 x: ctt_eth_bls_fp, 3646 y: ctt_eth_bls_fp, 3647 } 3648 #[test] 3649 fn bindgen_test_layout_ctt_eth_bls_pubkey() { 3650 const UNINIT: ::core::mem::MaybeUninit<ctt_eth_bls_pubkey> = ::core::mem::MaybeUninit::uninit(); 3651 let ptr = UNINIT.as_ptr(); 3652 assert_eq!( 3653 ::core::mem::size_of::<ctt_eth_bls_pubkey>(), 3654 96usize, 3655 concat!("Size of: ", stringify!(ctt_eth_bls_pubkey)) 3656 ); 3657 assert_eq!( 3658 ::core::mem::align_of::<ctt_eth_bls_pubkey>(), 3659 1usize, 3660 concat!("Alignment of ", stringify!(ctt_eth_bls_pubkey)) 3661 ); 3662 assert_eq!( 3663 unsafe { ::core::ptr::addr_of!((*ptr).x) as usize - ptr as usize }, 3664 0usize, 3665 concat!( 3666 "Offset of field: ", 3667 stringify!(ctt_eth_bls_pubkey), 3668 "::", 3669 stringify!(x) 3670 ) 3671 ); 3672 assert_eq!( 3673 unsafe { ::core::ptr::addr_of!((*ptr).y) as usize - ptr as usize }, 3674 48usize, 3675 concat!( 3676 "Offset of field: ", 3677 stringify!(ctt_eth_bls_pubkey), 3678 "::", 3679 stringify!(y) 3680 ) 3681 ); 3682 } 3683 #[repr(C)] 3684 #[derive(Copy, Clone)] 3685 pub struct ctt_eth_bls_signature { 3686 x: ctt_eth_bls_fp2, 3687 y: ctt_eth_bls_fp2, 3688 } 3689 #[test] 3690 fn bindgen_test_layout_ctt_eth_bls_signature() { 3691 const UNINIT: ::core::mem::MaybeUninit<ctt_eth_bls_signature> = 3692 ::core::mem::MaybeUninit::uninit(); 3693 let ptr = UNINIT.as_ptr(); 3694 assert_eq!( 3695 ::core::mem::size_of::<ctt_eth_bls_signature>(), 3696 192usize, 3697 concat!("Size of: ", stringify!(ctt_eth_bls_signature)) 3698 ); 3699 assert_eq!( 3700 ::core::mem::align_of::<ctt_eth_bls_signature>(), 3701 1usize, 3702 concat!("Alignment of ", stringify!(ctt_eth_bls_signature)) 3703 ); 3704 assert_eq!( 3705 unsafe { ::core::ptr::addr_of!((*ptr).x) as usize - ptr as usize }, 3706 0usize, 3707 concat!( 3708 "Offset of field: ", 3709 stringify!(ctt_eth_bls_signature), 3710 "::", 3711 stringify!(x) 3712 ) 3713 ); 3714 assert_eq!( 3715 unsafe { ::core::ptr::addr_of!((*ptr).y) as usize - ptr as usize }, 3716 96usize, 3717 concat!( 3718 "Offset of field: ", 3719 stringify!(ctt_eth_bls_signature), 3720 "::", 3721 stringify!(y) 3722 ) 3723 ); 3724 } 3725 #[repr(u8)] 3726 #[derive(Copy, Clone, Hash, PartialEq, Eq)] 3727 pub enum ctt_eth_bls_status { 3728 cttBLS_Success = 0, 3729 cttBLS_VerificationFailure = 1, 3730 cttBLS_PointAtInfinity = 2, 3731 cttBLS_ZeroLengthAggregation = 3, 3732 cttBLS_InconsistentLengthsOfInputs = 4, 3733 } 3734 extern "C" { 3735 #[must_use] 3736 pub fn ctt_eth_bls_pubkey_is_zero(pubkey: *const ctt_eth_bls_pubkey) -> bool; 3737 } 3738 extern "C" { 3739 #[must_use] 3740 pub fn ctt_eth_bls_signature_is_zero(sig: *const ctt_eth_bls_signature) -> bool; 3741 } 3742 extern "C" { 3743 #[must_use] 3744 pub fn ctt_eth_bls_pubkeys_are_equal( 3745 a: *const ctt_eth_bls_pubkey, 3746 b: *const ctt_eth_bls_pubkey, 3747 ) -> bool; 3748 } 3749 extern "C" { 3750 #[must_use] 3751 pub fn ctt_eth_bls_signatures_are_equal( 3752 a: *const ctt_eth_bls_signature, 3753 b: *const ctt_eth_bls_signature, 3754 ) -> bool; 3755 } 3756 extern "C" { 3757 #[must_use] 3758 #[doc = " Validate the secret key.\n\n Regarding timing attacks, this will leak timing information only if the key is invalid.\n Namely, the secret key is 0 or the secret key is too large."] 3759 pub fn ctt_eth_bls_validate_seckey( 3760 seckey: *const ctt_eth_bls_seckey, 3761 ) -> ctt_codec_scalar_status; 3762 } 3763 extern "C" { 3764 #[must_use] 3765 #[doc = " Validate the public key.\n\n This is an expensive operation that can be cached."] 3766 pub fn ctt_eth_bls_validate_pubkey(pubkey: *const ctt_eth_bls_pubkey) -> ctt_codec_ecc_status; 3767 } 3768 extern "C" { 3769 #[must_use] 3770 #[doc = " Validate the signature.\n\n This is an expensive operation that can be cached."] 3771 pub fn ctt_eth_bls_validate_signature( 3772 pubkey: *const ctt_eth_bls_signature, 3773 ) -> ctt_codec_ecc_status; 3774 } 3775 extern "C" { 3776 #[must_use] 3777 #[doc = " Serialize a secret key\n\n Returns cttCodecScalar_Success if successful"] 3778 pub fn ctt_eth_bls_serialize_seckey( 3779 dst: *mut byte, 3780 seckey: *const ctt_eth_bls_seckey, 3781 ) -> ctt_codec_scalar_status; 3782 } 3783 extern "C" { 3784 #[must_use] 3785 #[doc = " Serialize a public key in compressed (Zcash) format\n\n Returns cttCodecEcc_Success if successful"] 3786 pub fn ctt_eth_bls_serialize_pubkey_compressed( 3787 dst: *mut byte, 3788 pubkey: *const ctt_eth_bls_pubkey, 3789 ) -> ctt_codec_ecc_status; 3790 } 3791 extern "C" { 3792 #[must_use] 3793 #[doc = " Serialize a signature in compressed (Zcash) format\n\n Returns cttCodecEcc_Success if successful"] 3794 pub fn ctt_eth_bls_serialize_signature_compressed( 3795 dst: *mut byte, 3796 sig: *const ctt_eth_bls_signature, 3797 ) -> ctt_codec_ecc_status; 3798 } 3799 extern "C" { 3800 #[must_use] 3801 #[doc = " Deserialize a secret key\n This also validates the secret key.\n\n This is protected against side-channel unless your key is invalid.\n In that case it will like whether it's all zeros or larger than the curve order."] 3802 pub fn ctt_eth_bls_deserialize_seckey( 3803 seckey: *mut ctt_eth_bls_seckey, 3804 src: *const byte, 3805 ) -> ctt_codec_scalar_status; 3806 } 3807 extern "C" { 3808 #[must_use] 3809 #[doc = " Deserialize a public key in compressed (Zcash) format.\n This does not validate the public key.\n It is intended for cases where public keys are stored in a trusted location\n and validation can be cached.\n\n Warning ⚠:\n This procedure skips the very expensive subgroup checks.\n Not checking subgroup exposes a protocol to small subgroup attacks.\n\n Returns cttCodecEcc_Success if successful"] 3810 pub fn ctt_eth_bls_deserialize_pubkey_compressed_unchecked( 3811 pubkey: *mut ctt_eth_bls_pubkey, 3812 src: *const byte, 3813 ) -> ctt_codec_ecc_status; 3814 } 3815 extern "C" { 3816 #[must_use] 3817 #[doc = " Deserialize a public_key in compressed (Zcash) format.\n This also validates the public key.\n\n Returns cttCodecEcc_Success if successful"] 3818 pub fn ctt_eth_bls_deserialize_pubkey_compressed( 3819 pubkey: *mut ctt_eth_bls_pubkey, 3820 src: *const byte, 3821 ) -> ctt_codec_ecc_status; 3822 } 3823 extern "C" { 3824 #[must_use] 3825 #[doc = " Deserialize a signature in compressed (Zcash) format.\n This does not validate the signature.\n It is intended for cases where public keys are stored in a trusted location\n and validation can be cached.\n\n Warning ⚠:\n This procedure skips the very expensive subgroup checks.\n Not checking subgroup exposes a protocol to small subgroup attacks.\n\n Returns cttCodecEcc_Success if successful"] 3826 pub fn ctt_eth_bls_deserialize_signature_compressed_unchecked( 3827 sig: *mut ctt_eth_bls_signature, 3828 src: *const byte, 3829 ) -> ctt_codec_ecc_status; 3830 } 3831 extern "C" { 3832 #[must_use] 3833 #[doc = " Deserialize a signature in compressed (Zcash) format.\n This also validates the signature.\n\n Returns cttCodecEcc_Success if successful"] 3834 pub fn ctt_eth_bls_deserialize_signature_compressed( 3835 sig: *mut ctt_eth_bls_signature, 3836 src: *const byte, 3837 ) -> ctt_codec_ecc_status; 3838 } 3839 extern "C" { 3840 #[doc = " Derive the public key matching with a secret key\n\n Secret protection:\n - A valid secret key will only leak that it is valid.\n - An invalid secret key will leak whether it's all zero or larger than the curve order."] 3841 pub fn ctt_eth_bls_derive_pubkey( 3842 pubkey: *mut ctt_eth_bls_pubkey, 3843 seckey: *const ctt_eth_bls_seckey, 3844 ); 3845 } 3846 extern "C" { 3847 #[doc = " Produce a signature for the message under the specified secret key\n Signature is on BLS12-381 G2 (and public key on G1)\n\n For message domain separation purpose, the tag is `BLS_SIG_BLS12381G2_XMD:SHA-256_SSWU_RO_POP_`\n\n Input:\n - A secret key\n - A message\n\n Output:\n - `signature` is overwritten with `message` signed with `secretKey`\n with the scheme\n - A status code indicating success or if the secret key is invalid.\n\n Secret protection:\n - A valid secret key will only leak that it is valid.\n - An invalid secret key will leak whether it's all zero or larger than the curve order."] 3848 pub fn ctt_eth_bls_sign( 3849 sig: *mut ctt_eth_bls_signature, 3850 seckey: *const ctt_eth_bls_seckey, 3851 message: *const byte, 3852 message_len: isize, 3853 ); 3854 } 3855 extern "C" { 3856 #[must_use] 3857 #[doc = " Check that a signature is valid for a message\n under the provided public key.\n returns `true` if the signature is valid, `false` otherwise.\n\n For message domain separation purpose, the tag is `BLS_SIG_BLS12381G2_XMD:SHA-256_SSWU_RO_POP_`\n\n Input:\n - A public key initialized by one of the key derivation or deserialization procedure.\n Or validated via validate_pubkey\n - A message\n - A signature initialized by one of the key derivation or deserialization procedure.\n Or validated via validate_signature\n\n Output:\n - a status code with verification success if signature is valid\n or indicating verification failure\n\n In particular, the public key and signature are assumed to be on curve and subgroup-checked."] 3858 pub fn ctt_eth_bls_verify( 3859 pubkey: *const ctt_eth_bls_pubkey, 3860 message: *const byte, 3861 message_len: isize, 3862 sig: *const ctt_eth_bls_signature, 3863 ) -> ctt_eth_bls_status; 3864 } 3865 extern "C" { 3866 #[must_use] 3867 #[doc = " Check that a signature is valid for a message\n under the aggregate of provided public keys.\n returns `true` if the signature is valid, `false` otherwise.\n\n For message domain separation purpose, the tag is `BLS_SIG_BLS12381G2_XMD:SHA-256_SSWU_RO_POP_`\n\n Input:\n - Public keys initialized by one of the key derivation or deserialization procedure.\n Or validated via validate_pubkey\n - A message\n - A signature initialized by one of the key derivation or deserialization procedure.\n Or validated via validate_signature\n\n In particular, the public keys and signature are assumed to be on curve subgroup checked."] 3868 pub fn ctt_eth_bls_fast_aggregate_verify( 3869 pubkeys: *const ctt_eth_bls_pubkey, 3870 pubkeys_len: isize, 3871 message: *const byte, 3872 message_len: isize, 3873 aggregate_sig: *const ctt_eth_bls_signature, 3874 ) -> ctt_eth_bls_status; 3875 }