@@ -846,3 +846,84 @@ def test_py_random_error():
846846 assert len (caught_warnings ) == 1
847847 assert issubclass (caught_warnings [0 ].category , Warning )
848848 assert match in str (caught_warnings [0 ].message )
849+
850+
851+ def test_extractShareComponents_py (full_range_of_bits ):
852+ # Generate shares with python
853+ secrets .init (full_range_of_bits )
854+ secret = secrets .random (128 )
855+ shares = secrets .share (secret , 6 , 3 )
856+ shuffle = pieces (shares )
857+
858+ py_result = secrets .extractShareComponents (shuffle [0 ])
859+ js_result = node .extractShareComponents (shuffle [0 ])
860+ assert py_result ["bits" ] == js_result ["bits" ]
861+ assert py_result ["id" ] == js_result ["id" ]
862+ assert py_result ["data" ] == js_result ["data" ]
863+
864+
865+ def test_extractShareComponents_js (full_range_of_bits ):
866+ secret = secrets .random (128 )
867+ # Generate shares with node
868+ node_data = []
869+ node_data .append (node .init (full_range_of_bits , list = True ))
870+ node_data .append (node .share (secret , 6 , 3 , list = True ))
871+ js_results = chain (node_data )
872+
873+ shuffle = pieces (js_results [- 1 ])
874+
875+ py_result = secrets .extractShareComponents (shuffle [0 ])
876+ js_result = node .extractShareComponents (shuffle [0 ])
877+ assert py_result ["bits" ] == js_result ["bits" ]
878+ assert py_result ["id" ] == js_result ["id" ]
879+ assert py_result ["data" ] == js_result ["data" ]
880+
881+
882+ def test_lagrange_simple ():
883+ secrets .init ()
884+ js_poly = node ._lagrange (
885+ 0 , [1 , 2 , 3 , 4 , 5 , 6 ], [79 , 123 , 68 , 175 , 144 , 164 ]
886+ )
887+ polynomial = secrets .lagrange (
888+ 0 , [1 , 2 , 3 , 4 , 5 , 6 ], [79 , 123 , 68 , 175 , 144 , 164 ]
889+ )
890+ assert polynomial == js_poly
891+ polynomial = secrets .lagrange (0 , [1 , 2 , 3 , 4 , 5 ], [79 , 123 , 68 , 175 , 144 ])
892+ assert polynomial == js_poly
893+ polynomial = secrets .lagrange (0 , [1 , 2 , 3 , 4 ], [79 , 123 , 68 , 175 ])
894+ assert polynomial == js_poly
895+ polynomial = secrets .lagrange (0 , [1 , 2 , 3 ], [79 , 123 , 68 ])
896+ assert polynomial == js_poly
897+ polynomial = secrets .lagrange (0 , [1 , 2 ], [79 , 123 ])
898+ assert polynomial != js_poly
899+ polynomial = secrets .lagrange (0 , [1 ], [79 ])
900+ assert polynomial != js_poly
901+
902+
903+ def test_combine_js2py (full_range_of_bits ):
904+ secrets .init (full_range_of_bits )
905+ secret = secrets .random (128 )
906+ # Generate shares with node
907+ node_data = []
908+ node_data .append (node .init (full_range_of_bits , list = True ))
909+ node_data .append (node .share (secret , 6 , 3 , list = True ))
910+ js_results = chain (node_data )
911+
912+ shuffle = pieces (js_results [- 1 ])
913+ # print(shuffle)
914+
915+ py_result = secrets .combine (shuffle )
916+ assert py_result == secret
917+
918+
919+ def test_combine_py2py (full_range_of_bits ):
920+ secrets .init (full_range_of_bits )
921+ secret = secrets .random (128 )
922+ # Generate shares with node
923+ shares = secrets .share (secret , 6 , 3 )
924+
925+ shuffle = pieces (shares )
926+ # print(shuffle)
927+
928+ py_result = secrets .combine (shuffle )
929+ assert py_result == secret
0 commit comments