MCPcopy Create free account

hub / github.com/bohutang/crypto-in-action / functions

Functions79 in github.com/bohutang/crypto-in-action

↓ 23 callersMethodscalar_mul
Returns k*(x1,y1) where k is interge using Montgomery ladder for constant time. https://en.wikipedia.org/wiki/Elliptic_curve_point_multiplication#Mont
curves/src/clockcurve.rs:141
↓ 13 callersMethodscalar_add
Returns the sum of (x1,y1) and (x2,y2). ```text x^2 + y^2 = 1 addtion formual: (x3,y3) = (x1,y1) + (x2,y2) = (x1*y2 + x2*y1,y2*y1 - x1*x2) ``` # Exa
curves/src/clockcurve.rs:57
↓ 11 callersFunctionmod_mul
Computes two numbers product in modulo arithmetic. ```text a * b (mod m) ``` # Examples ```rust use algebra::arith; fn main() { let x = arith::mod
algebra/src/arith.rs:69
↓ 10 callersMethodmul
Computes two numbers product in finite field. ```text a * b (mod primer) ``` # Examples ```rust use fields::field; fn main() { let fp = field::Fie
fields/src/field.rs:73
↓ 8 callersFunctionmod_add
Computes two numbers sum in modulo arithmetic. ```text a + b (mod m) ``` # Examples ```rust use algebra::arith; fn main() { let x = arith::mod_add
algebra/src/arith.rs:22
↓ 8 callersFunctionmod_div
Computes two numbers division in modulo arithmetic. ```text a / b (mod m) ``` # Examples ```rust use algebra::arith; fn main() { let x = arith::mo
algebra/src/arith.rs:93
↓ 8 callersFunctionmod_sub
Computes two numbers subtract in modulo arithmetic. ```text a - b (mod m) ``` # Examples ```rust use algebra::arith; fn main() { let x = arith::mo
algebra/src/arith.rs:49
↓ 8 callersMethodscalar_basemul
Returns k*(subgroup base point) where k is integer. # Examples ```rust use curves::clockcurve; use subgroups::subgroup; fn main() { let g = clockcu
subgroups/src/subgroup.rs:45
↓ 8 callersMethodsign
Returns signature with the param(message, private, random nonce). # Examples ```rust use signatures::ecdsa; fn main() { let message = 10; let priva
signatures/src/ecdsa.rs:49
↓ 7 callersMethodscalar_basemul
Returns k*(base point) where k is integer. # Examples ```rust use curves::clockcurve; fn main() { let curve = clockcurve::ClockCurve::default(); le
curves/src/clockcurve.rs:178
↓ 7 callersMethodscalar_double
Returns the sum of (x1,y1) and (x1,y1). # Examples ```rust use curves::clockcurve; fn main() { let curve = clockcurve::ClockCurve::default(); let p
curves/src/clockcurve.rs:122
↓ 6 callersMethodadd
Computes two numbers sum in finite field. ```text a + b (mod primer) ``` # Examples ```rust use fields::field; fn main() { let fp = field::Field::
fields/src/field.rs:33
↓ 6 callersMethodorder
Returns the order of the subgroup. # Examples ```rust use curves::clockcurve; use subgroups::subgroup; fn main() { let g = clockcurve::Point { x: 1
subgroups/src/subgroup.rs:92
↓ 5 callersFunctionmod_exp
Computes exponention in modulo arithmetic. ```text a ^ b (mod m) ``` # Examples ```rust use algebra::arith; fn main() { let x = arith::mod_exp(3,
algebra/src/arith.rs:144
↓ 4 callersMethodhash
(&self, message: i8, x: i8)
signatures/src/schnorr.rs:30
↓ 4 callersMethodhash
(&self, message: i8)
signatures/src/ecdsa.rs:30
↓ 4 callersFunctionmod_inv
Computes the inverse of x in modulo arithmetic. ```text x = a ^ -1 (mod m) ``` ```text Algorithm: x == a ^ -1 (mod m) a * x == 1 (mod m) a * x + m *
algebra/src/arith.rs:122
↓ 4 callersMethodpubkey
(&self, pk: i8)
signatures/src/ecdsa.rs:26
↓ 4 callersMethodverify
Returns verify result. # Examples ```rust use signatures::ecdsa; fn main() { let message = 10; let private = 5; let randomk = 7; let ecd = ecdsa::E
signatures/src/ecdsa.rs:87
↓ 3 callersMethodpoints
Returns all points of the subgroup. # Examples ```rust use curves::clockcurve; use subgroups::subgroup; fn main() { let g = clockcurve::Point { x:
subgroups/src/subgroup.rs:64
↓ 3 callersMethodsub
Computes two numbers sum in finite field. ```text a - b (mod primer) ``` # Examples ```rust use fields::field; fn main() { let fp = field::Field::
fields/src/field.rs:53
↓ 3 callersFunctionxgcd
Implements Extended Euclidean algorithm with non-recursive Given integers a and b, compute integers a and b such that ```text a * x + b * y == gcd(a,
algebra/src/gcd.rs:53
↓ 3 callersMethody
Returns y coordinate if exists, otherwise None. # Examples ```rust use curves::clockcurve; fn main() { let curve = clockcurve::ClockCurve::default(
curves/src/clockcurve.rs:215
↓ 2 callersMethodfinal_key
Returns the final round authenticated key. 𝐾(𝐴𝑙𝑖𝑐𝑒) = (𝑆 − 𝑁^𝑤)^𝑥 # Examples ```rust use zkps::spake2; fn main() { let password = 7; let alice_rand
zkps/src/spake2.rs:92
↓ 2 callersMethodis_on_curve
Checks the point p is on the curve or not. # Examples ```rust use curves::clockcurve; fn main() { let curve = clockcurve::ClockCurve::default(); le
curves/src/clockcurve.rs:196
↓ 2 callersMethodlegendre_symbol
Computes the Legendre symbol a|p using Euler's criterion. ```text Returns 1 if a has a square root modulo p, -1 otherwise. ``` # Examples ```rust u
fields/src/field.rs:153
↓ 2 callersMethodpake_key
Returns the first round pake key. 𝐾(𝐴𝑙𝑖𝑐𝑒) = (𝑆 − 𝑁^𝑤)^𝑥 # Examples ```rust use zkps::spake2; fn main() { let password = 7; let alice_rand_number =
zkps/src/spake2.rs:65
↓ 2 callersMethodpoint_neg
Returns the neg(x1,y1) = (-x1,y1). # Examples ```rust use curves::clockcurve; fn main() { let curve = clockcurve::ClockCurve::default(); let p1 = c
curves/src/clockcurve.rs:101
↓ 2 callersMethodsqrt
Computes the square root (mod primer) of 'a'. ```text Returns None if has no square root. ``` ```text Solve the congruence of the form: x^2 = a (mod
fields/src/field.rs:120
↓ 1 callersMethodbatch_verify
Returns batch verify result. (s1+s2+…+s1000)×G=(r1+…+r1000)+(hash(r1,m1)×P1+ hash(r2,m2)×P2+…+hash(r1000,m1000)×P1000) # Examples ```rust use signa
signatures/src/schnorr.rs:135
↓ 1 callersMethodexp
Computes exponention in finite field. ```text a ^ b (mod m) ``` # Examples ```rust use fields::field; fn main() { let fp = field::Field::new(37);
fields/src/field.rs:93
↓ 1 callersMethodpublickey
(&self)
curves/src/keys.rs:55
↓ 1 callersMethodscalar_sub
Returns the sum of (x1,y1) and (x2,-y2). # Examples ```rust use curves::clockcurve; fn main() { let curve = clockcurve::ClockCurve::default(); let
curves/src/clockcurve.rs:83
Functionarith_modadd_test
()
algebra/tests/arith_test.rs:9
Functionarith_moddiv_test
()
algebra/tests/arith_test.rs:48
Functionarith_modexp_test
()
algebra/tests/arith_test.rs:84
Functionarith_modinv_test
()
algebra/tests/arith_test.rs:66
Functionarith_modmul_test
()
algebra/tests/arith_test.rs:35
Functionarith_modsub_test
()
algebra/tests/arith_test.rs:22
Functioncurves_clockcurve_element_test
()
curves/tests/clockcurve_test.rs:210
Functioncurves_clockcurve_is_on_curve_test
()
curves/tests/clockcurve_test.rs:186
Functioncurves_clockcurve_mul_test
()
curves/tests/clockcurve_test.rs:121
Functioncurves_clockcurve_scalar_add_test
()
curves/tests/clockcurve_test.rs:9
Functioncurves_clockcurve_scalar_double_test
()
curves/tests/clockcurve_test.rs:30
Functioncurves_clockcurve_scalar_mul_test
()
curves/tests/clockcurve_test.rs:51
Functioncurves_clockcurve_y_test
()
curves/tests/clockcurve_test.rs:202
Functioncurves_keys_test
()
curves/tests/keys_test.rs:10
Methoddefault
()
signatures/src/schnorr.rs:14
Methoddefault
()
signatures/src/ecdsa.rs:14
Methoddefault
()
curves/src/clockcurve.rs:25
Methoddefault
()
subgroups/src/subgroup.rs:14
Functionecdh_test
Elliptic Curve Diffie-Hellman (ECDH) 1. Alice selects a as secert key and calculates 𝐴 = 𝑔^𝑎 mod 𝑝 2. Bob b selects b as secert key and calculates 𝐵 =
protocols/tests/ecdh_test.rs:18
Functionfields_f12_test
()
fields/tests/field_test.rs:41
Functionfields_f37_test
()
fields/tests/field_test.rs:70
Functionfields_field_test
()
fields/tests/field_test.rs:9
Functionfields_legendre_symbol_test
()
fields/tests/field_test.rs:99
Functionfields_sqrt_test
()
fields/tests/field_test.rs:141
Functiongcd
Implements Euclidean algorithm with non-recursive ```text Algorithm: gcd(37,14) 37 = 14(2) + 9 14 = 9(1) + 5 9 = 5(1) + 4 5 = 4(1) + 1 ``` # Exa
algebra/src/gcd.rs:27
Functiongcd_gcd_test
()
algebra/tests/gcd_test.rs:9
Functiongcd_xgcd_test
()
algebra/tests/gcd_test.rs:15
Methodnew
()
signatures/src/schnorr.rs:20
Methodnew
()
signatures/src/ecdsa.rs:20
Methodnew
(pwd: i8, rnd: i8, sec: i8)
zkps/src/spake2.rs:33
Methodnew
(p: i8)
fields/src/field.rs:13
Methodnew
(k: i8)
curves/src/keys.rs:42
Methodnew
(g: clockcurve::Point)
subgroups/src/subgroup.rs:20
Methodpubkey
(&self, pk: i8)
signatures/src/schnorr.rs:26
Methodserialize
Returns the serialize format of the public key. ```text [0] -- x [1] -- y ``` # Examples ```rust use curves::keys; fn main() { let privatekey = key
curves/src/keys.rs:29
Methodsign
Returns signature with the param(message, private, random nonce). r = k*G s = k + hash(r,m)*pk # Examples ```rust use signatures::schnorr; fn main(
signatures/src/schnorr.rs:59
Functionsignatures_ecdsa_key_leakage_from_nonce_reuse_test
s1 = (H(m1) + r1*x1) / k s2 = (H(m2) + r2*x2) / k r1 = r2 and x1 = x2 k = (H(m1) - H(m2)) / (s1 - s2) x1 = ((k * s1) - H(m1)) / r1 https://crypto.sta
signatures/tests/ecdsa_test.rs:35
Functionsignatures_ecdsa_test
()
signatures/tests/ecdsa_test.rs:12
Functionsignatures_schnorr_batch_verify_test
()
signatures/tests/schnorr_test.rs:28
Functionsignatures_schnorr_key_leakage_from_nonce_reuse_test
s1 = k+hash(r|m1)*pk s2 = k+hash(r|m2)*pk pk = (s1 - s2)/(hash(r|m1) - hash(r|m2)) https://en.wikipedia.org/wiki/Schnorr_signature#Key_leakage_from_no
signatures/tests/schnorr_test.rs:65
Functionsignatures_schnorr_test
()
signatures/tests/schnorr_test.rs:12
Functionsubgroups_subgroup_default_test
()
subgroups/tests/subgroup_test.rs:11
Functionsubgroups_subgroup_order4_test
()
subgroups/tests/subgroup_test.rs:56
Functionsubgroups_subgroup_order_test
()
subgroups/tests/subgroup_test.rs:80
Methodverify
Returns verify result. check s*G = r + hash(r,m)*P # Examples ```rust use signatures::schnorr; fn main() { let message = 10; let private = 5; let
signatures/src/schnorr.rs:94
Functionzkps_spake2_test
()
zkps/tests/spake2_test.rs:11