mirror of
https://github.com/selfxyz/self.git
synced 2026-01-14 17:17:59 -05:00
@@ -2,9 +2,7 @@
|
||||
name = "noir"
|
||||
type = "bin"
|
||||
authors = [""]
|
||||
compiler_version = ">=0.35.0"
|
||||
compiler_version = ">=0.36.0"
|
||||
|
||||
[dependencies]
|
||||
# version error in rsa crate 0.3.1, keep both rsa and bignum are causing some issues.
|
||||
rsa = { tag = "main", git = "https://github.com/noir-lang/noir_rsa" , directory = "lib" }
|
||||
bignum = { tag = "v0.3.6", git = "https://github.com/noir-lang/noir-bignum" }
|
||||
# version error in rsa crate 0.3.1, keep both rsa and bignum are causing some issues.
|
||||
@@ -5,7 +5,7 @@ pub fn verify_dg1_and_dg2(
|
||||
dg1: [u8; 93],
|
||||
dg1_hash_offset: u8,
|
||||
dg2_hash: [u8; 64],
|
||||
eContent: [u8; MAX_ECONTENT_LEN]
|
||||
eContent: [u8; MAX_ECONTENT_LEN],
|
||||
) {
|
||||
let computed_dg1_hash = sha256(dg1);
|
||||
|
||||
@@ -25,6 +25,6 @@ pub fn verify_econtent(
|
||||
signed_attr: [u8; MAX_SIGNED_ATTR_LEN],
|
||||
signed_attr_econtent_hash_offset: u8,
|
||||
eContent_padded_length: u16,
|
||||
signed_attr_padded_length: u8
|
||||
signed_attr_padded_length: u8,
|
||||
) {}
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -22,3 +22,572 @@ pub fn ofac_name(
|
||||
|
||||
smt_verify(name_hash, smt_leaf_value, smt_root, smt_siblings, false)
|
||||
}
|
||||
|
||||
mod tests {
|
||||
use super::ofac_name;
|
||||
|
||||
#[test]
|
||||
fn test_membership_proof() {
|
||||
let dg1 = [
|
||||
97, 91, 95, 31, 88, 80, 60, 70, 82, 65, 72, 69, 78, 65, 79, 60, 77, 79, 78, 84, 79, 89,
|
||||
65, 60, 60, 65, 82, 67, 65, 78, 71, 69, 76, 60, 68, 69, 60, 74, 69, 83, 85, 83, 60, 60,
|
||||
60, 60, 60, 60, 60, 57, 56, 108, 104, 57, 48, 53, 53, 54, 52, 70, 82, 65, 53, 52, 49,
|
||||
48, 48, 55, 49, 77, 51, 48, 48, 49, 48, 49, 53, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
|
||||
60, 60, 60, 60, 48, 50,
|
||||
];
|
||||
|
||||
let smt_leaf_value =
|
||||
14861136771255138582189790512719132073503224483690068808762385640824858406629;
|
||||
|
||||
let smt_root =
|
||||
17984904875400716818220831094015521032559090125729120459301078263371691488357;
|
||||
|
||||
let smt_siblings = [
|
||||
10199468046253699331670348021047559583700548318540134774348147654688161056749,
|
||||
0,
|
||||
6083370544989720109156048712010843914429147120094488276721009332466889312273,
|
||||
5586594631950621840536853070270815240392587436012623217450280105771860285853,
|
||||
14705516658198453418166850749316834667792679277427395163183485819794752164499,
|
||||
20294346648230675003512289404512456397527716989223146960883203144613490624816,
|
||||
15556345207626951873101308065346231335763211229567088581076981578475211976174,
|
||||
8454006058345473657364700463943989954421716114610631888481741171039175175309,
|
||||
14712399178116735674021514987362319440088928955532574561485941344812007567829,
|
||||
20335650369645130448227168045576376057891850014270871287741110154280660420332,
|
||||
11853662051376884493510373227826660669018238713133968635633602226811266599363,
|
||||
8816221654924477984371160663012539824223988182807237912242232562054208365736,
|
||||
2736247012926663474323421617011790463337288414362372295285359168654313100115,
|
||||
2596707961717849786781214040994425093357841893244789816445590708444770449875,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
];
|
||||
|
||||
//should be false
|
||||
assert(!ofac_name(dg1, smt_leaf_value, smt_root, smt_siblings));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_non_membership_proof() {
|
||||
let dg1 = [
|
||||
97, 91, 95, 31, 88, 80, 60, 70, 82, 65, 68, 85, 80, 79, 78, 84, 60, 60, 65, 76, 80, 72,
|
||||
79, 78, 83, 69, 60, 72, 85, 71, 72, 85, 69, 83, 60, 65, 76, 66, 69, 82, 84, 60, 60, 60,
|
||||
60, 60, 60, 60, 60, 49, 53, 65, 65, 56, 49, 50, 51, 52, 52, 70, 82, 65, 48, 52, 48, 50,
|
||||
49, 49, 49, 77, 51, 48, 48, 49, 48, 49, 53, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
|
||||
60, 60, 60, 48, 50,
|
||||
];
|
||||
|
||||
let mut smt_leaf_value = 0;
|
||||
|
||||
let mut smt_root =
|
||||
17984904875400716818220831094015521032559090125729120459301078263371691488357;
|
||||
|
||||
let smt_siblings = [
|
||||
3065957881137995887397051372882352090443894855491365866754555758109929899135,
|
||||
5486637173150133037601893391095205722279221272456582770712106734529285414596,
|
||||
21877745139488284044947677595277888377089739679552102728633210271204138078662,
|
||||
20088094985221023205284225276794353921532832861812194580376175673139434663763,
|
||||
9791761062250580261550240660909219868253738637381614611500322616161263306872,
|
||||
7752669313063875926985470887065513265708684266879510277148279960335235191327,
|
||||
5150620330179796440712226311741104796541354059724724362978902700312860732474,
|
||||
372374822543347644817065074545720005008866950044131095955177601657207839375,
|
||||
2999395811465490745275443969939757336278090732875051464776040667807754227592,
|
||||
3001817857623841966652629754796802143041072311805545518387766832456220325477,
|
||||
4143741570693597378106149811709671714764264002589616310458204220860294517586,
|
||||
2736247012926663474323421617011790463337288414362372295285359168654313100115,
|
||||
2596707961717849786781214040994425093357841893244789816445590708444770449875,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
];
|
||||
|
||||
assert(ofac_name(dg1, smt_leaf_value, smt_root, smt_siblings));
|
||||
|
||||
//wrong root - should be false
|
||||
smt_root -= 1234;
|
||||
|
||||
assert(!ofac_name(dg1, smt_leaf_value, smt_root, smt_siblings));
|
||||
|
||||
smt_root += 1234;
|
||||
smt_leaf_value += 1234;
|
||||
assert(!ofac_name(dg1, smt_leaf_value, smt_root, smt_siblings));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
use crate::types::DG1;
|
||||
use crate::utils::other::smt::smt_verify;
|
||||
|
||||
pub fn ofac_name(
|
||||
pub fn ofac_name_dob(
|
||||
dg1: DG1,
|
||||
smt_leaf_value: Field,
|
||||
smt_root: Field,
|
||||
@@ -35,3 +35,572 @@ pub fn ofac_name(
|
||||
|
||||
smt_verify(name_dob_hash, smt_leaf_value, smt_root, smt_siblings, false)
|
||||
}
|
||||
|
||||
mod tests {
|
||||
use super::ofac_name_dob;
|
||||
|
||||
#[test]
|
||||
fn test_membership_proof() {
|
||||
let dg1 = [
|
||||
97, 91, 95, 31, 88, 80, 60, 70, 82, 65, 72, 69, 78, 65, 79, 60, 77, 79, 78, 84, 79, 89,
|
||||
65, 60, 60, 65, 82, 67, 65, 78, 71, 69, 76, 60, 68, 69, 60, 74, 69, 83, 85, 83, 60, 60,
|
||||
60, 60, 60, 60, 60, 57, 56, 108, 104, 57, 48, 53, 53, 54, 52, 70, 82, 65, 53, 52, 49,
|
||||
48, 48, 55, 49, 77, 51, 48, 48, 49, 48, 49, 53, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
|
||||
60, 60, 60, 60, 48, 50,
|
||||
];
|
||||
|
||||
let smt_leaf_value =
|
||||
19121709764585838290739922509076903710717349707375243032134784334729669626864;
|
||||
|
||||
let smt_root =
|
||||
15275043987441881288949262865776849415360202675613643770276216220967809869488;
|
||||
|
||||
let smt_siblings = [
|
||||
2275501437671744506319408364556563816466212137867492819139840195047746956164,
|
||||
11083391891708608254157195998948109121483248917293149623342164165569455353446,
|
||||
16767176731814972896482021107462831258390377967331917202812365494901639931638,
|
||||
7562205882306917857170921672752570908146875883800664340033324494703317465834,
|
||||
8861526816457113857184268601346270147250846120461261439172893894686351158925,
|
||||
16816820758845506704608622317329854241125980416561787807063425675204184519870,
|
||||
1198040546025602839664999707966090097707928243279129718903948824758668333583,
|
||||
3290324140078760419138406967272848592004539293247352559810627073340266179246,
|
||||
20802462207343150637653343538766232986560418588252961623617091202130755834711,
|
||||
16994018337727850429211961173445217495163320322824298259289353094572559240287,
|
||||
3224290266395612468036887797325795029904596032198242130923084537207308912589,
|
||||
21503259802564826534930375203734353849647782948225209528053547742179102936054,
|
||||
18449239592792129416419296342294933876584806613658497570303606393628011901528,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
];
|
||||
|
||||
//should be false
|
||||
assert(!ofac_name_dob(dg1, smt_leaf_value, smt_root, smt_siblings));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_non_membership_proof() {
|
||||
let dg1 = [
|
||||
97, 91, 95, 31, 88, 80, 60, 70, 82, 65, 68, 85, 80, 79, 78, 84, 60, 60, 65, 76, 80, 72,
|
||||
79, 78, 83, 69, 60, 72, 85, 71, 72, 85, 69, 83, 60, 65, 76, 66, 69, 82, 84, 60, 60, 60,
|
||||
60, 60, 60, 60, 60, 49, 53, 65, 65, 56, 49, 50, 51, 52, 52, 70, 82, 65, 48, 52, 48, 50,
|
||||
49, 49, 49, 77, 51, 48, 48, 49, 48, 49, 53, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
|
||||
60, 60, 60, 48, 50,
|
||||
];
|
||||
|
||||
let mut smt_leaf_value = 0;
|
||||
|
||||
let mut smt_root =
|
||||
15275043987441881288949262865776849415360202675613643770276216220967809869488;
|
||||
|
||||
let smt_siblings = [
|
||||
20876863927072988098487865258501989990544860900747361143636500803327979506402,
|
||||
6037841873623695121283771976841614162724898044173693762095811993867561337586,
|
||||
20967710697333841348619818985123584970034637900471985352490710237868869753637,
|
||||
9671377179144741905593951787340451635819453114517854941154808106164214926478,
|
||||
8382064261229644345256334842610586774090486942529814245311963866707971708286,
|
||||
12795352994775728128904508235585515658267044549942172663612611159581235851554,
|
||||
18304020634628219507109920629626996488330223421996126369988946719480628369662,
|
||||
18559020852291647154996997946614837838242207134243061284774653501024701300008,
|
||||
20521328354270154919350007042328235316419777618227383060242765986049417244388,
|
||||
7153525528520649991911701608964176435993958113309468417085580412660759433195,
|
||||
7299850152172381334552107555398464239242231021241892629341216023423211765700,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
];
|
||||
|
||||
assert(ofac_name_dob(dg1, smt_leaf_value, smt_root, smt_siblings));
|
||||
|
||||
//wrong root - should be false
|
||||
smt_root -= 1234;
|
||||
|
||||
assert(!ofac_name_dob(dg1, smt_leaf_value, smt_root, smt_siblings));
|
||||
|
||||
smt_root += 1234;
|
||||
smt_leaf_value += 1234;
|
||||
assert(!ofac_name_dob(dg1, smt_leaf_value, smt_root, smt_siblings));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
use crate::types::DG1;
|
||||
use crate::utils::other::smt::smt_verify;
|
||||
|
||||
pub fn ofac_name(
|
||||
pub fn ofac_passport_number(
|
||||
dg1: DG1,
|
||||
smt_leaf_value: Field,
|
||||
smt_root: Field,
|
||||
@@ -17,3 +17,573 @@ pub fn ofac_name(
|
||||
|
||||
smt_verify(passport_hash, smt_leaf_value, smt_root, smt_siblings, false)
|
||||
}
|
||||
|
||||
mod tests {
|
||||
use super::ofac_passport_number;
|
||||
|
||||
#[test]
|
||||
fn test_membership_proof() {
|
||||
let dg1 = [
|
||||
97, 91, 95, 31, 88, 80, 60, 70, 82, 65, 72, 69, 78, 65, 79, 60, 77, 79, 78, 84, 79, 89,
|
||||
65, 60, 60, 65, 82, 67, 65, 78, 71, 69, 76, 60, 68, 69, 60, 74, 69, 83, 85, 83, 60, 60,
|
||||
60, 60, 60, 60, 60, 57, 56, 108, 104, 57, 48, 53, 53, 54, 52, 70, 82, 65, 53, 52, 49,
|
||||
48, 48, 55, 49, 77, 51, 48, 48, 49, 48, 49, 53, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
|
||||
60, 60, 60, 60, 48, 50,
|
||||
];
|
||||
|
||||
let smt_leaf_value =
|
||||
19378463006833395365107737548446061070205240691229284490379626153269032586499;
|
||||
|
||||
let smt_root = 8835534532168993302133750141226608592096167902191400765009673745674397224484;
|
||||
|
||||
let smt_siblings = [
|
||||
3955491676910407004044472216026991675959367833592171188898198510428253371566,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
18050069708537439860494870379449931231983442566860206355084426800494240483417,
|
||||
0,
|
||||
1616493180105380757835583979003479501450823805344447027186980306459208668281,
|
||||
17329534438480855115635344322734434685059032905018848056522254264566705600021,
|
||||
15044767757340226465081834598908883700733033388697706874200923710607553803552,
|
||||
12269274693257994778026444445219794191551647294730703826482785664445598393747,
|
||||
14020620457951479001623520812728674141602457492519308338791364683313689919091,
|
||||
10972922004284943091660912095001768404074825208098932703502420258011736623699,
|
||||
6954429082210805353241355771971048027944686260967237748087875581927863631070,
|
||||
7725835406597329303714916306387998556969845398822724601324126370257570571627,
|
||||
5763248805726558661824921473992685470729864125408418377626966947655507831901,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
];
|
||||
|
||||
//should be false
|
||||
assert(!ofac_passport_number(dg1, smt_leaf_value, smt_root, smt_siblings));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_non_membership_proof() {
|
||||
let dg1 = [
|
||||
97, 91, 95, 31, 88, 80, 60, 70, 82, 65, 68, 85, 80, 79, 78, 84, 60, 60, 65, 76, 80, 72,
|
||||
79, 78, 83, 69, 60, 72, 85, 71, 72, 85, 69, 83, 60, 65, 76, 66, 69, 82, 84, 60, 60, 60,
|
||||
60, 60, 60, 60, 60, 49, 53, 65, 65, 56, 49, 50, 51, 52, 52, 70, 82, 65, 48, 52, 48, 50,
|
||||
49, 49, 49, 77, 51, 48, 48, 49, 48, 49, 53, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
|
||||
60, 60, 60, 48, 50,
|
||||
];
|
||||
|
||||
let mut smt_leaf_value =
|
||||
10720813908115827717913368881852413742238137063691424987013506811486899613202;
|
||||
|
||||
let mut smt_root =
|
||||
8835534532168993302133750141226608592096167902191400765009673745674397224484;
|
||||
|
||||
let smt_siblings = [
|
||||
21850086379231919719987400494781366163279608682195949528338021982623629438971,
|
||||
2292258584812296662466108928528027050538498389646176421566753234119492614945,
|
||||
12467834269246078881307747483550682012949343230803859859010831296556789807920,
|
||||
2462075995855523669617684755698005398338301848715269883270042006013201461269,
|
||||
12292768095463967230547002621575577158470919531653044337773911671174173215920,
|
||||
5109818590371274008574634507154067731398853358351813410663858630529528226623,
|
||||
10481784078638447052052245488559706904460793637681508513767526763815701991142,
|
||||
9928093918906812116607631424141818926877934757436031296761948821938361778434,
|
||||
8306498947975314010201063120789602670840420319063986591027308600956240702618,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
];
|
||||
|
||||
assert(ofac_passport_number(dg1, smt_leaf_value, smt_root, smt_siblings));
|
||||
|
||||
//wrong root - should be false
|
||||
smt_root -= 1234;
|
||||
|
||||
assert(!ofac_passport_number(dg1, smt_leaf_value, smt_root, smt_siblings));
|
||||
smt_root += 1234;
|
||||
|
||||
//wrong leaf value
|
||||
smt_leaf_value += 1234;
|
||||
assert(!ofac_passport_number(dg1, smt_leaf_value, smt_root, smt_siblings));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
use dep::bignum::BigNum;
|
||||
use dep::bignum::runtime_bignum::BigNumInstance;
|
||||
use dep::std;
|
||||
// use dep::bignum::BigNum;
|
||||
// use dep::bignum::runtime_bignum::BigNumInstance;
|
||||
// use dep::std;
|
||||
|
||||
use dep::rsa::types::{RSA, RSA2048, BN2048, BNInst2048};
|
||||
// use dep::rsa::types::{RSA, RSA2048, BN2048, BNInst2048};
|
||||
|
||||
pub fn rsa_signature_verifier(bn: [[Field; 18]; 2], hash: [u8; 32], signature: BN2048) {
|
||||
let rsa: RSA2048 = RSA {};
|
||||
let BNInstance: BNInst2048 = BigNumInstance::new(bn[0], bn[1]);
|
||||
assert(rsa.verify_sha256_pkcs1v15(BNInstance, hash, signature, 65537));
|
||||
}
|
||||
// pub fn rsa_signature_verifier(bn: [[Field; 18]; 2], hash: [u8; 32], signature: BN2048) {
|
||||
// let rsa: RSA2048 = RSA {};
|
||||
// let BNInstance: BNInst2048 = BigNumInstance::new(bn[0], bn[1]);
|
||||
// assert(rsa.verify_sha256_pkcs1v15(BNInstance, hash, signature, 65537));
|
||||
// }
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ pub fn binary_merkle_root<let N: u32>(
|
||||
let mut root = 0;
|
||||
|
||||
for i in 0..N {
|
||||
let isDepth = if i + 1 == depth { 1 } else { 0 };
|
||||
let isDepth = if i == depth { 1 } else { 0 };
|
||||
|
||||
root += isDepth * nodes[i];
|
||||
|
||||
@@ -23,9 +23,8 @@ pub fn binary_merkle_root<let N: u32>(
|
||||
nodes[i + 1] = std::hash::poseidon::bn254::hash_2(child_nodes);
|
||||
}
|
||||
|
||||
if depth == 0 {
|
||||
root = leaf;
|
||||
}
|
||||
let isDepth = if N == depth { 1 } else { 0 };
|
||||
root += isDepth * nodes[N];
|
||||
|
||||
root
|
||||
}
|
||||
@@ -83,7 +82,7 @@ mod tests {
|
||||
|
||||
let (root, indices, siblings) = get_merkle_path::<134>(leaves, 5);
|
||||
|
||||
let computed_root = binary_merkle_root(leaves[5], 4, indices, siblings);
|
||||
let computed_root = binary_merkle_root(leaves[5], 3, indices, siblings);
|
||||
|
||||
assert(computed_root == root);
|
||||
}
|
||||
@@ -98,7 +97,7 @@ mod tests {
|
||||
|
||||
let (root, indices, siblings) = get_merkle_path::<4>(leaves, 5);
|
||||
|
||||
let computed_root = binary_merkle_root(leaves[5], 4, indices, siblings);
|
||||
let computed_root = binary_merkle_root(leaves[5], 3, indices, siblings);
|
||||
|
||||
assert(computed_root == root);
|
||||
}
|
||||
|
||||
@@ -24,16 +24,16 @@ pub fn smt_verify<let N: u32>(
|
||||
) -> bool {
|
||||
let depth = siblings_length(siblings);
|
||||
|
||||
let path_in_bits = value.to_be_bits();
|
||||
let path_in_bits = virtualValue.to_be_bits::<N>();
|
||||
let mut path: [u1; N] = [0; N];
|
||||
|
||||
//move the last "depth" number of bits from path_in_bits to the starting of path
|
||||
assert(depth < path_in_bits.len());
|
||||
assert(depth < N);
|
||||
for i in 0..depth {
|
||||
path[i] = path_in_bits[path_in_bits.len() - depth + i];
|
||||
}
|
||||
|
||||
let leaf = std::hash::poseidon::bn254::hash_3([value, 1, 1]);
|
||||
|
||||
let leaf_or_zero = if value == 0 { 0 } else { leaf };
|
||||
|
||||
let computed_root = binary_merkle_root(leaf_or_zero, depth, path, siblings);
|
||||
|
||||
Binary file not shown.
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user