mul.sage 1.1 KB

1234567891011121314151617181920212223242526272829303132
  1. load('share.sage')
  2. load('beaver.sage')
  3. import random
  4. party0_val = 2
  5. party1_val = 3
  6. source = Source(p)
  7. # additive share distribution, and communication of private values
  8. party0_random = 1
  9. alpha1 = AuthenticatedShare(party0_random, source, 0)
  10. alpha2 = AuthenticatedShare(party0_val - party0_random, source, 0)
  11. assert (alpha1.authenticated_open(alpha2) == party0_val)
  12. party1_random = 1
  13. beta1 = AuthenticatedShare(party1_random, source, 1)
  14. beta2 = AuthenticatedShare(party1_val - party1_random, source, 1)
  15. assert (beta1.authenticated_open(beta2) == party1_val)
  16. a1b1 = MultiplicationAuthenticatedShares(alpha1, beta1, source.triplet(0), 0)
  17. a2b2 = MultiplicationAuthenticatedShares(alpha2, beta2, source.triplet(1), 1)
  18. print('alpha2: {}'.format(alpha2))
  19. print('beta2: {}'.format(beta2))
  20. print('d1: {}'.format(a1b1.d))
  21. print('d2: {}'.format(a2b2.d))
  22. print('e1: {}'.format(a1b1.e))
  23. print('e2: {}'.format(a2b2.e))
  24. lhs = a1b1.mul(a2b2.d, a2b2.e)
  25. rhs = a2b2.mul(a1b1.d, a1b1.e)
  26. res = lhs.authenticated_open(rhs)
  27. assert (res == party0_val*party1_val), 'mul: {}, expected mul: {}'.format(res, party0_val*party1_val)