mul.sage 922 B

1234567891011121314151617181920212223242526
  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 = K(3)
  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 = K(3)
  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. lhs = a1b1.mul(a2b2.d, a2b2.e)
  19. rhs = a2b2.mul(a1b1.d, a1b1.e)
  20. res = lhs.authenticated_open(rhs)
  21. assert (res == party0_val*party1_val), 'mul: {}, expected mul: {}'.format(res, party0_val*party1_val)