ec_msm.sage 1.2 KB

123456789101112131415161718192021222324252627282930313233
  1. load('beaver.sage')
  2. import random
  3. N = 10
  4. source = Source(p)
  5. points = [CurvePoint.random() for _ in range(0, N)]
  6. lhs_points = [pt - CurvePoint.random() for pt in points]
  7. rhs_points = [point - lhs for (point, lhs) in zip(points, lhs_points)]
  8. lhs_points_shares = [ECAuthenticatedShare(pt) for pt in lhs_points]
  9. rhs_points_shares = [ECAuthenticatedShare(pt) for pt in rhs_points]
  10. scalars = [random.randint(0,p) for i in range(0, N)]
  11. lhs_scalars = [s - random.randint(0,p) for s in scalars]
  12. rhs_scalars = [s - lhs for (s, lhs) in zip(scalars, lhs_scalars)]
  13. lhs_scalars_shares = [AuthenticatedShare(s, source, 0) for s in lhs_scalars]
  14. rhs_scalars_shares = [AuthenticatedShare(s, source, 1) for s in rhs_scalars]
  15. lhs_msm = MSM(lhs_points_shares, lhs_scalars_shares, source, 0)
  16. rhs_msm = MSM(rhs_points_shares, rhs_scalars_shares, source, 1)
  17. #
  18. lhs_de = [[point_scalar.d, point_scalar.e] for point_scalar in lhs_msm.point_scalars]
  19. rhs_de = [[point_scalar.d, point_scalar.e] for point_scalar in rhs_msm.point_scalars]
  20. res = []
  21. lhs = lhs_msm.msm(rhs_de)
  22. rhs = rhs_msm.msm(lhs_de)
  23. res = lhs.authenticated_open(rhs)
  24. assert res == sum([p*s for p, s in zip(points, scalars)]), 'res: {}, expected: {}'.format(res, sum([p*s for p, s in zip(points, scalars)]))