monomial_key_exchange.sh 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254
  1. # parse argument
  2. architecture=$1
  3. permutation=$2
  4. matrix_decompressed_file=$3
  5. matrix_comp_file=$4
  6. output_dir=$5
  7. lorem_ipsum_file=$6
  8. if [ $permutation -eq 1 ] ; then
  9. permutation_str=""
  10. else
  11. permutation_str=" -no-permutation-key "
  12. fi
  13. # generate different encoding paramethers
  14. str="
  15. xrnlib-cli \
  16. --encoding-conf -compiled-param -password-str \"AlicePassword0#\" \
  17. --dump-encoding-param -encoding-param $output_dir/alice_encoding_param_file.xf
  18. "
  19. echo ""; echo $str; echo ""
  20. eval $str
  21. str="
  22. xrnlib-cli \
  23. --encoding-conf -compiled-param -password-str \"BobPassword0#\" \
  24. --dump-encoding-param -encoding-param $output_dir/bob_encoding_param_file.xf
  25. "
  26. echo ""; echo $str; echo ""
  27. eval $str
  28. str="
  29. xrnlib-cli \
  30. --encoding-conf -compiled-param -password-str \"OneTimePassword0#\" \
  31. --dump-encoding-param -encoding-param $output_dir/otp_encoding_param_file.xf
  32. "
  33. echo ""; echo $str; echo ""
  34. eval $str
  35. # convert datastructures for the encoding paramethers
  36. str="
  37. xrnlib-cli \
  38. --decoding-conf -compiled-param -no-password \
  39. --encoding-conf -encoding-param $output_dir/alice_encoding_param_file.xf -no-password \
  40. --decode-encode -to-decode $matrix_decompressed_file -to-encode $output_dir/alice_xoron_matrix.xf
  41. "
  42. echo ""; echo $str; echo ""
  43. eval $str
  44. str="
  45. xrnlib-cli \
  46. --decoding-conf -compiled-param -no-password \
  47. --encoding-conf -encoding-param $output_dir/bob_encoding_param_file.xf -no-password \
  48. --decode-encode -to-decode $matrix_decompressed_file -to-encode $output_dir/bob_xoron_matrix.xf
  49. "
  50. echo ""; echo $str; echo ""
  51. eval $str
  52. # generate alice data structures
  53. str="
  54. xrnlib-cli \
  55. --encoding-conf -encoding-param $output_dir/alice_encoding_param_file.xf -no-password \
  56. --permutation-conf -arch $architecture $permutation_str \
  57. --make-monomial-key -monomial-key $output_dir/alice_monomial_key_file.xf
  58. "
  59. echo ""; echo $str; echo ""
  60. eval $str
  61. str="
  62. xrnlib-cli \
  63. --decoding-conf -encoding-param $output_dir/alice_encoding_param_file.xf -no-password \
  64. --encoding-conf -encoding-param $output_dir/alice_encoding_param_file.xf -no-password \
  65. --sequence-conf -xmatrix $output_dir/alice_xoron_matrix.xf \
  66. --permutation-conf -arch $architecture $permutation_str \
  67. --make-start-point -start-point $output_dir/alice_start_point_file.xf
  68. "
  69. echo ""; echo $str; echo ""
  70. eval $str
  71. str="
  72. xrnlib-cli \
  73. --decoding-conf -encoding-param $output_dir/alice_encoding_param_file.xf -no-password \
  74. --encoding-conf -encoding-param $output_dir/alice_encoding_param_file.xf -no-password \
  75. --arithmetic-conf -start-point $output_dir/alice_start_point_file.xf -monomial-key $output_dir/alice_monomial_key_file.xf \
  76. --sequence-conf -xmatrix $output_dir/alice_xoron_matrix.xf \
  77. --permutation-conf -arch $architecture \
  78. --make-binomial-key -binomial-key $output_dir/alice_binomial_key_file.xf
  79. "
  80. echo ""; echo $str; echo ""
  81. eval $str
  82. # send the file to bob and extracting meta data
  83. str="
  84. xrnlib-cli \
  85. --decoding-conf -encoding-param $output_dir/alice_encoding_param_file.xf -no-password \
  86. --encoding-conf -encoding-param $output_dir/otp_encoding_param_file.xf -no-password \
  87. --decode-encode -to-decode $output_dir/alice_binomial_key_file.xf -to-encode $output_dir/otp_alice_binomial_key_file.xf
  88. "
  89. echo ""; echo $str; echo ""
  90. eval $str
  91. str="
  92. xrnlib-cli \
  93. --decoding-conf -encoding-param $output_dir/otp_encoding_param_file.xf -no-password \
  94. --encoding-conf -encoding-param $output_dir/bob_encoding_param_file.xf -no-password \
  95. --decode-encode -to-decode $output_dir/otp_alice_binomial_key_file.xf -to-encode $output_dir/alice_binomial_key_file_for_bob.xf
  96. "
  97. echo ""; echo $str; echo ""
  98. eval $str
  99. str="
  100. xrnlib-cli \
  101. --decoding-conf -encoding-param $output_dir/bob_encoding_param_file.xf -no-password \
  102. --permutation-conf -arch 128 \
  103. --logging-conf -lib-error-log $output_dir/print_alice_binomial_key.err -lib-info-log $output_dir/print_alice_binomial_key.info \
  104. --print-header -xrn-file $output_dir/alice_binomial_key_file_for_bob.xf ; \
  105. if grep -q XRN-ERR \"$output_dir/print_alice_binomial_key.err\" ; then \
  106. rm $output_dir/print_alice_binomial_key.err ; \
  107. rm $output_dir/print_alice_binomial_key.info ; \
  108. xrnlib-cli \
  109. --decoding-conf -encoding-param $output_dir/bob_encoding_param_file.xf -no-password \
  110. --permutation-conf -arch 256 \
  111. --logging-conf -lib-error-log $output_dir/print_alice_binomial_key.err -lib-info-log $output_dir/print_alice_binomial_key.info \
  112. --print-header -xrn-file $output_dir/alice_binomial_key_file_for_bob.xf ; \
  113. fi
  114. "
  115. echo ""; echo $str; echo ""
  116. eval $str
  117. bob_architecture=$(cat $output_dir/print_alice_binomial_key.info | grep nbits | sed 's/^.*:.// ; s/.$//')
  118. bob_permutation_used=$(cat $output_dir/print_alice_binomial_key.info | grep permutation_used | sed 's/^.*:.//')
  119. if [ "$bob_permutation_used" == "1" ] ; then
  120. bob_permutation_str=""
  121. else
  122. bob_permutation_str=" -no-permutation-key "
  123. fi
  124. echo "# bob_architecture $bob_architecture bob_permutation_used $bob_permutation_used bob_permutation_str=$bob_permutation_str"
  125. # bob generating binomial key
  126. str="
  127. xrnlib-cli \
  128. --decoding-conf -encoding-param $output_dir/bob_encoding_param_file.xf -no-password \
  129. --encoding-conf -encoding-param $output_dir/bob_encoding_param_file.xf -no-password \
  130. --arithmetic-conf -binomial-key $output_dir/alice_binomial_key_file_for_bob.xf \
  131. --permutation-conf -arch $bob_architecture \
  132. --convert-binomial-key-to-start-point -start-point $output_dir/bob_start_point_file.xf
  133. "
  134. echo ""; echo $str; echo ""
  135. eval $str
  136. str="
  137. xrnlib-cli \
  138. --encoding-conf -encoding-param $output_dir/bob_encoding_param_file.xf -no-password \
  139. --permutation-conf -arch $bob_architecture $bob_permutation_str \
  140. --make-monomial-key -monomial-key $output_dir/bob_monomial_key_file.xf
  141. "
  142. echo ""; echo $str; echo ""
  143. eval $str
  144. str="
  145. xrnlib-cli \
  146. --decoding-conf -encoding-param $output_dir/bob_encoding_param_file.xf -no-password \
  147. --encoding-conf -encoding-param $output_dir/bob_encoding_param_file.xf -no-password \
  148. --arithmetic-conf -start-point $output_dir/bob_start_point_file.xf -monomial-key $output_dir/bob_monomial_key_file.xf \
  149. --sequence-conf -xmatrix $output_dir/bob_xoron_matrix.xf \
  150. --permutation-conf -arch $bob_architecture \
  151. --make-binomial-key -binomial-key $output_dir/bob_binomial_key_file.xf
  152. "
  153. echo ""; echo $str; echo ""
  154. eval $str
  155. # exchange key for alice
  156. str="
  157. xrnlib-cli \
  158. --decoding-conf -encoding-param $output_dir/bob_encoding_param_file.xf -no-password \
  159. --encoding-conf -encoding-param $output_dir/otp_encoding_param_file.xf -no-password \
  160. --decode-encode -to-decode $output_dir/bob_binomial_key_file.xf -to-encode $output_dir/otp_bob_binomial_key_file.xf
  161. "
  162. echo ""; echo $str; echo ""
  163. eval $str
  164. str="
  165. xrnlib-cli \
  166. --decoding-conf -encoding-param $output_dir/otp_encoding_param_file.xf -no-password \
  167. --encoding-conf -encoding-param $output_dir/alice_encoding_param_file.xf -no-password \
  168. --decode-encode -to-decode $output_dir/otp_bob_binomial_key_file.xf -to-encode $output_dir/bob_binomial_key_file_for_alice.xf
  169. "
  170. echo ""; echo $str; echo ""
  171. eval $str
  172. str="
  173. xrnlib-cli \
  174. --decoding-conf -encoding-param $output_dir/alice_encoding_param_file.xf -no-password \
  175. --encoding-conf -encoding-param $output_dir/alice_encoding_param_file.xf -no-password \
  176. --arithmetic-conf -binomial-key $output_dir/alice_binomial_key_file.xf -monomial-key $output_dir/alice_monomial_key_file.xf \
  177. --sequence-conf -xmatrix $output_dir/alice_xoron_matrix.xf \
  178. --permutation-conf -arch $architecture \
  179. --exchange-monomial-key -external-binomial-key $output_dir/bob_binomial_key_file_for_alice.xf -shared-monomial-key $output_dir/alice_shared_monomial_key_file.xf
  180. "
  181. echo ""; echo $str; echo ""
  182. eval $str
  183. # exchange key for bob
  184. str="
  185. xrnlib-cli \
  186. --decoding-conf -encoding-param $output_dir/bob_encoding_param_file.xf -no-password \
  187. --encoding-conf -encoding-param $output_dir/bob_encoding_param_file.xf -no-password \
  188. --arithmetic-conf -binomial-key $output_dir/bob_binomial_key_file.xf -monomial-key $output_dir/bob_monomial_key_file.xf \
  189. --sequence-conf -xmatrix $output_dir/bob_xoron_matrix.xf \
  190. --permutation-conf -arch $architecture \
  191. --exchange-monomial-key -external-binomial-key $output_dir/alice_binomial_key_file_for_bob.xf -shared-monomial-key $output_dir/bob_shared_monomial_key_file.xf
  192. "
  193. echo ""; echo $str; echo ""
  194. eval $str
  195. # convert and compare shared keys to a plain text json files
  196. str="
  197. xrnlib-cli \
  198. --decoding-conf -encoding-param $output_dir/alice_encoding_param_file.xf -no-password \
  199. --permutation-conf -arch $architecture \
  200. --logging-conf -lib-info-log $output_dir/alice_shared_monomial_key_file.json \
  201. --print-header -xrn-file $output_dir/alice_shared_monomial_key_file.xf
  202. "
  203. echo ""; echo $str; echo ""
  204. eval $str
  205. str="
  206. xrnlib-cli \
  207. --decoding-conf -encoding-param $output_dir/bob_encoding_param_file.xf -no-password \
  208. --permutation-conf -arch $bob_architecture \
  209. --logging-conf -lib-info-log $output_dir/bob_shared_monomial_key_file.json \
  210. --print-header -xrn-file $output_dir/bob_shared_monomial_key_file.xf
  211. "
  212. echo ""; echo $str; echo ""
  213. eval $str
  214. str="
  215. cmp --silent $output_dir/alice_shared_monomial_key_file.json $output_dir/bob_shared_monomial_key_file.json && echo 'PASS' || echo 'FAIL'
  216. "
  217. echo ""; echo $str; echo ""
  218. eval $str