Skip to content

Commit dbd1bfd

Browse files
committed
golden sig reg party
1 parent 793b198 commit dbd1bfd

File tree

1 file changed

+63
-0
lines changed

1 file changed

+63
-0
lines changed

mithril-stm/src/single_signature/signature_registered_party.rs

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,3 +51,66 @@ impl Serialize for SingleSignatureWithRegisteredParty {
5151
tuple.end()
5252
}
5353
}
54+
55+
#[cfg(test)]
56+
mod tests {
57+
mod golden {
58+
use blake2::{Blake2b, digest::consts::U32};
59+
use rand_chacha::ChaCha20Rng;
60+
use rand_core::SeedableRng;
61+
62+
use crate::bls_multi_signature::{BlsSigningKey, BlsVerificationKeyProofOfPossession};
63+
use crate::{
64+
ClosedKeyRegistration, KeyRegistration, Parameters, Signer,
65+
SingleSignatureWithRegisteredParty,
66+
};
67+
68+
type D = Blake2b<U32>;
69+
70+
const GOLDEN_JSON: &str = r#"[
71+
{
72+
"sigma":[149,157,201,187,140,54,0,128,209,88,16,203,61,78,77,98,161,133,58,152,29,74,217,113,64,100,10,161,186,167,133,114,211,153,218,56,223,84,105,242,41,54,224,170,208,185,126,83],
73+
"indexes":[14,30,38,39,67,95,101,103,104,122,127,128,138,142,159,161,177,178,220,224,231,237,253,258,260,264,285,288,304,307,317,324,334,337,346,348,362,365,369,386,389,422,433,447,448,449,472,480,483,488,489,493,495,501,506,510,511,526,527,536,549,551,553,554,555,556,570,575,593,596,600,604,613,629,630,635,639,654,655,660,688,700,734,745,746,750,789,809,831,836,863,882,894,915,917,924,926,930,948,953,976,984,991,1009,1013,1022,1056,1058,1092,1117,1125,1130,1132,1138,1153,1162,1169,1172,1190,1193,1202,1204,1207,1211,1214,1215,1232,1236,1247,1258,1259,1278,1281,1284,1298,1304,1309,1327,1328,1331,1336,1343,1361,1362,1364,1365,1372,1388,1420,1425,1426,1430,1432,1441,1445,1453,1463,1467,1470,1487,1490,1491,1492,1515,1522,1552,1555,1587,1607,1614,1625,1661,1689,1694,1702,1715,1745,1752,1757,1771,1776,1784,1794,1803,1823,1830,1843,1863,1865,1866,1869,1870,1886,1908,1921,1935,1939,1945,1970,2006,2020,2027,2029,2036,2057,2061,2065,2073,2075,2103,2111,2120,2123,2136,2142,2147,2155,2170,2172,2194,2207,2208,2228,2235,2240,2241,2251,2252,2257,2266,2270,2271,2282,2321,2324,2331,2336,2339,2345,2353,2355,2383,2409,2442,2451,2452,2460,2469,2477,2495,2505,2512,2518,2530,2534,2550,2554,2555,2576,2592,2596,2601,2622,2635,2637,2640,2648,2677,2684,2688,2689,2698,2710,2711,2716,2718,2721,2727,2729,2731,2735,2737,2756,2768,2776,2779,2785,2786,2789,2791,2795,2796,2800,2801,2821,2844,2847,2853,2855,2869,2883,2886,2910,2915,2916,2928,2936,2943,2945,2950,2953,2962,2969,2986,2996,2997,3017,3027,3044,3046,3049,3051,3101,3112,3125,3174,3179,3193,3206,3224,3249,3260,3280,3288,3289,3294,3323,3330,3354,3357,3369,3372,3376,3381,3412,3422,3429,3436,3440,3456,3458,3462,3466,3479,3489,3490,3498,3500,3506,3523,3529,3530,3534,3535,3539,3560,3572,3574,3578,3581,3584,3586,3597,3600,3612,3618,3620,3649,3669,3684,3692,3693,3717,3728,3736,3737,3762,3786,3787,3790,3792,3793,3800,3823,3829,3831,3878,3896,3915,3917,3919,3930,3948,3950,3954,3965,3976,3984,3990,3993,3999,4003,4019,4020,4023,4039,4049,4060,4068,4069,4075,4083,4094,4107,4114,4125,4138,4150,4171,4178,4184,4191,4202,4211,4218,4221,4234,4236,4245,4268,4297,4302,4308,4314,4317,4319,4336,4339,4342,4346,4348,4356,4367,4374,4396,4414,4440,4470,4477,4480,4519,4534,4561,4571,4573,4612,4626,4652,4659,4671,4675,4695,4704,4746,4752,4753,4756,4770,4781,4801,4809,4825,4833,4840,4873,4898,4901,4903,4904,4912,4914,4935,4952,4980,4997,5022,5024,5025,5033,5106,5123,5141,5158,5184,5188,5206,5238,5258,5259,5271,5276,5303,5308,5316,5330,5337,5341,5343,5360,5370,5374,5378,5381,5383,5385,5386,5391,5393,5402,5416,5418,5423,5424,5431,5432,5434,5435,5456,5462,5463,5478,5483,5485,5501,5508,5510,5515,5519,5528,5531,5533,5554,5559,5586,5589,5601,5602,5610,5611,5619,5623,5628,5638,5652,5660,5661,5679,5684,5686,5706,5712,5715,5718,5721,5740,5749,5750,5774,5776,5778,5788,5794,5797,5813,5827,5847,5856,5870,5873,5880,5911,5913,5915,5917,5925,5928,5932,5963,5982,5983,5986,5994,5999,6002,6009,6011,6013,6028,6032,6053,6082,6085,6090,6095,6099,6116,6129,6146,6150,6153,6155,6168,6175,6180,6188,6210,6220,6234,6244,6252,6261,6266,6276,6307,6320,6324,6335,6346,6357,6368,6372,6382,6390,6393,6395,6406,6413,6415,6416,6418,6438,6461,6490,6500,6501,6505,6521,6524,6538,6542,6561,6575,6577,6578,6603,6610,6628,6641,6664,6668,6671,6673,6675,6680,6693,6711,6713,6716,6725,6738,6740,6742,6747,6748,6769,6771,6777,6789,6813,6819,6820,6822,6823,6827,6834,6835,6883,6889,6891,6892,6897,6902,6911,6929,6937,6941,6946,6948,6949,6966,6982,7001,7004,7010,7014,7016,7034,7058,7069,7071,7079,7094,7099,7119,7145,7147,7151,7160,7162,7172,7192,7206,7223,7224,7225,7238,7254,7264,7268,7269,7287,7295,7308,7322,7324,7358,7360,7365,7369,7384,7391,7394,7404,7407,7408,7413,7442,7454,7456,7464,7466,7474,7476,7483,7484,7486,7488,7495,7499,7505,7507,7511,7517,7518,7519,7541,7542,7553,7560,7566,7567,7576,7586,7596,7611,7614,7637,7643,7665,7666,7700,7705,7730,7736,7778,7790,7800,7802,7816,7820,7824,7826,7841,7865,7867,7889,7935,7938,7943,7946,7948,7956,7959,7974,7992,8001,8013,8025,8033,8036,8040,8045,8047,8053,8054,8063,8067,8073,8074,8079,8088,8100,8111,8124,8125,8128,8143,8153,8161,8169,8173,8181,8185,8190,8193,8198,8214,8252,8257,8267,8276,8278,8301,8310,8319,8339,8343,8351,8355,8402,8412,8418,8425,8437,8442,8450,8451,8457,8460,8465,8471,8511,8516,8522,8526,8540,8543,8547,8564,8569,8570,8571,8574,8575,8580,8592,8608,8610,8611,8623,8624,8636,8640,8675,8682,8711,8717,8727,8745,8746,8747,8757,8769,8777,8778,8782,8797,8800,8806,8816,8818,8823,8832,8863,8868,8882,8886,8887,8925,8929,8940,8953,8957,8969,8988,9014,9019,9044,9054,9078,9088,9099,9117,9128,9133,9174,9179,9188,9192,9197,9202,9205,9223,9229,9240,9242,9261,9263,9268,9272,9276,9281,9285,9286,9305,9316,9327,9338,9347,9348,9350,9377,9382,9409,9420,9429,9438,9442,9443,9446,9453,9455,9458,9460,9466,9480,9510,9520,9529,9539,9540,9556,9567,9575,9590,9594,9597,9608,9616,9627,9634,9638,9653,9660,9662,9668,9673,9702,9708,9712,9718,9740,9746,9757,9759,9760,9767,9807,9809,9810,9815,9820,9837,9842,9852,9860,9863,9877,9887,9912,9915,9916,9954,9970,9996,9999,10013,10016,10034,10047,10052,10066,10068,10079,10080,10089,10107,10118,10120,10126,10129,10138,10178,10187,10196,10217,10224,10242,10253,10272,10282,10304,10339,10343,10352,10373,10377,10396,10406,10413,10433,10439,10440,10451,10462,10469,10491,10502,10506,10510,10512,10516,10526,10528,10540,10545,10558,10569,10580,10587,10590,10608,10611,10619,10623,10627,10629,10650,10657,10663,10664,10676,10681,10699,10708,10740,10741,10751,10753,10765,10789,10808,10812,10820,10836,10840,10845,10855,10859,10861,10869,10870,10874,10876,10893,10898,10899,10901,10903,10913,10926,10942,10952,10954,10964,10974,10983,10989,10994,11014,11026,11029,11044,11045,11050,11053,11055,11056,11072,11091,11092,11093,11094,11112,11114,11116,11118,11120,11123,11126,11127,11138,11139,11151,11182,11194,11230,11232,11235,11240,11278,11284,11288,11298,11301,11330,11340,11349,11353,11370,11381,11408,11412,11417,11437,11450,11470,11475,11487,11492,11515,11524,11525,11526,11533,11541,11544,11557,11578,11598,11602,11616,11633,11651,11655,11662,11664,11689,11702,11707,11709,11723,11731,11749,11752,11756,11758,11770,11772,11773,11774,11809,11811,11815,11832,11843,11854,11877,11903,11911,11919,11921,11952,11955,11971,11978,11990,11997,12006,12008,12020,12032,12035,12039,12059,12077,12096,12097,12098,12116,12139,12165,12170,12176,12199,12203,12210,12218,12222,12240,12253,12263,12267,12268,12276,12299,12300,12317,12321,12324,12326,12330,12334,12339,12343,12352,12380,12386,12392,12404,12407,12425,12431,12458,12471,12480,12482,12494,12520,12546,12562,12572,12573,12577,12580,12585,12611,12633,12637,12640,12651,12653,12665,12668,12669,12673,12674,12676,12682,12709,12720,12724,12734,12735,12749,12754,12769,12772,12778,12785,12797,12803,12820,12826,12831,12836,12848,12850,12854,12868,12870,12871,12878,12911,12936,12939,12952,12969,12971,13009,13021,13057,13059,13063,13070,13073,13080,13094,13100,13123,13126,13127,13132,13138,13163,13171,13185,13189,13205,13209,13223,13228,13229,13236,13252,13259,13277,13290,13300,13318,13328,13333,13352,13353,13365,13375,13382,13383,13409,13413,13420,13421,13434,13446,13456,13458,13460,13473,13476,13491,13492,13496,13506,13514,13525,13550,13564,13572,13580,13585,13589,13592,13594,13601,13605,13620,13625,13629,13630,13634,13635,13648,13658,13659,13661,13663,13664,13675,13691,13701,13705,13714,13715,13725,13739,13749,13771,13785,13792,13794,13810,13814,13818,13820,13827,13872,13895,13898,13915,13946,13971,13980,13991,13997,14000,14005,14020,14022,14026,14030,14038,14046,14066,14068,14073,14089,14095,14099,14102,14103,14110,14117,14124,14128,14140,14150,14151,14167,14189,14199,14205,14217,14229,14238,14251,14267,14275,14316,14319,14323,14324,14328,14331,14363,14367,14371,14377,14385,14398,14404,14410,14434,14440,14453,14469,14485,14492,14499,14500,14504,14509,14516,14517,14523,14543,14549,14558,14559,14605,14618,14635,14638,14647,14658,14666,14673,14682,14698,14704,14705,14719,14741,14778,14797,14799,14811,14841,14845,14850,14876,14902,14904,14940,14942,14960,14964,14967,14986,14995,15004,15006,15019,15024,15032,15034,15046,15052,15055,15062,15067,15081,15092,15096,15105,15114,15120,15123,15129,15142,15153,15155,15162,15164,15170,15180,15206,15214,15215,15221,15230,15231,15252,15259,15297,15334,15335,15338,15343,15344,15350,15358,15361,15390,15391,15437,15444,15445,15446,15448,15456,15458,15483,15487,15494,15521,15522,15525,15540,15547,15549,15551,15555,15557,15558,15559,15583,15599,15613,15615,15626,15633,15643,15645,15655,15659,15664,15672,15685,15687,15698,15713,15720,15724,15741,15742,15753,15759,15767,15769,15781,15785,15788,15804,15815,15819,15836,15848,15862,15863,15873,15880,15888,15891,15928,15931,15942,15946,15952,15964,15976,15978,15988,16011,16021,16033,16039,16054,16055,16071,16080,16081,16088,16101,16103,16111,16126,16144,16151,16165,16186,16188,16190,16206,16209,16211,16218,16220,16224,16233,16240,16252,16297,16300,16307,16313,16314,16327,16334,16358,16373,16385,16413,16416,16420,16438,16444,16462,16497,16499,16515,16526,16533,16537,16546,16548,16550,16561,16564,16576,16578,16579,16581,16589,16590,16594,16596,16603,16610,16647,16648,16649,16659,16663,16667,16668,16671,16676,16677,16679,16697,16727,16730,16735,16740,16754,16773,16798,16813,16824,16838,16840,16846,16876,16878,16882,16893,16901,16907,16920,16923,16924,16935,16942,16946,16957,16965,16966,16967,16971,16980,16990,16996,17000,17021,17025,17029,17034,17040,17042,17053,17055,17070,17072,17084,17086,17095,17110,17123,17145,17170,17191,17199,17200,17212,17215,17234,17262,17269,17282,17284,17291,17299,17326,17347,17353,17356,17361,17376,17377,17382,17385,17389,17402,17422,17428,17447,17451,17461,17466,17481,17486,17491,17495,17496,17507,17523,17536,17544,17549,17552,17557,17578,17583,17586,17588,17590,17595,17599,17607,17611,17618,17644,17645,17650,17659,17665,17671,17672,17676,17677,17685,17690,17692,17693,17694,17713,17715,17736,17740,17755,17771,17772,17777,17808,17849,17868,17871,17873,17876,17884,17890,17913,17927,17934,17935,17936,17940,17951,17968,17969,17971,17989,17995,18012,18035,18053,18063,18067,18076,18090,18096,18099,18114,18123,18127,18128,18130,18172,18187,18188,18192,18196,18212,18223,18225,18227,18242,18248,18256,18270,18273,18302,18309,18321,18360,18367,18379,18396,18402,18436,18451,18468,18484,18540,18546,18548,18549,18575,18576,18601,18613,18627,18630,18691,18715,18721,18724,18744,18745,18760,18774,18782,18788,18795,18810,18838,18852,18860,18865,18896,18900,18913,18917,18923,18931,18932,18935,18937,18940,18950,18977,18982,19012,19019,19031,19044,19045,19049,19050,19053,19065,19082,19108,19112,19118,19123,19126,19134,19145,19154,19169,19171,19189,19215,19220,19231,19233,19239,19240,19248,19274,19277,19291,19319,19334,19339,19343,19345,19355,19356,19369,19374,19385,19392,19393,19414,19422,19424,19456,19473,19478,19497,19503,19513,19534,19536,19545,19557,19566,19576,19578,19586,19589,19590,19604,19605,19608,19622,19629,19643,19656,19688,19695,19697,19700,19715,19719,19727,19744,19747,19750,19751,19758,19759,19778,19800,19806,19824,19841,19852,19862,19866,19868,19873,19885,19896,19904,19906,19921,19934,19937,19945,19947,19954,19959,19979,20000,20003,20005,20038,20043,20047,20066,20080,20083,20089,20090,20097,20113,20124,20142,20160,20162,20167,20190,20199,20209,20221,20232,20241,20254,20262,20266,20267,20286,20293,20298,20309,20315,20374,20376,20378,20380,20386,20396,20399,20416,20442,20443,20454,20478,20479,20502,20518,20540,20546,20547,20551,20579,20583,20601,20602,20606,20612,20630,20640,20641,20642,20647,20651,20654,20686,20687,20697,20702,20705,20711,20716,20726,20738,20741,20743,20750,20792,20797,20799,20801,20811,20821,20840,20842,20852,20856,20863,20872,20914,20922,20924,20941,20942,20945,20952,20957,20960,20968],
74+
"signer_index":1
75+
},
76+
[[143,161,255,48,78,57,204,220,25,221,164,252,248,14,56,126,186,135,228,188,145,181,52,200,97,99,213,46,0,199,193,89,187,88,29,135,173,244,86,36,83,54,67,164,6,137,94,72,6,105,128,128,93,48,176,11,4,246,138,48,180,133,90,142,192,24,193,111,142,31,76,111,110,234,153,90,208,192,31,124,95,102,49,158,99,52,220,165,94,251,68,69,121,16,224,194],1]
77+
]"#;
78+
79+
fn golden_value() -> SingleSignatureWithRegisteredParty {
80+
let mut rng = ChaCha20Rng::from_seed([0u8; 32]);
81+
let msg = [0u8; 16];
82+
let params = Parameters {
83+
m: 20973,
84+
k: 2422,
85+
phi_f: 0.2,
86+
};
87+
let sk_1 = BlsSigningKey::generate(&mut rng);
88+
let sk_2 = BlsSigningKey::generate(&mut rng);
89+
let pk_1 = BlsVerificationKeyProofOfPossession::from(&sk_1);
90+
let pk_2 = BlsVerificationKeyProofOfPossession::from(&sk_2);
91+
let mut key_reg = KeyRegistration::init();
92+
key_reg.register(1, pk_1).unwrap();
93+
key_reg.register(1, pk_2).unwrap();
94+
let closed_key_reg: ClosedKeyRegistration<D> = key_reg.close();
95+
let signer = Signer::set_signer(1, 1, params, sk_1, pk_1.vk, closed_key_reg.clone());
96+
let signature = signer.sign(&msg).unwrap();
97+
SingleSignatureWithRegisteredParty {
98+
sig: signature,
99+
reg_party: closed_key_reg.reg_parties[0],
100+
}
101+
}
102+
103+
#[test]
104+
fn golden_conversions() {
105+
let value = serde_json::from_str(GOLDEN_JSON)
106+
.expect("This JSON deserialization should not fail");
107+
assert_eq!(golden_value(), value);
108+
109+
let serialized =
110+
serde_json::to_string(&value).expect("This JSON serialization should not fail");
111+
let golden_serialized = serde_json::to_string(&golden_value())
112+
.expect("This JSON serialization should not fail");
113+
assert_eq!(golden_serialized, serialized);
114+
}
115+
}
116+
}

0 commit comments

Comments
 (0)