zero_knowledge_proofs_sym_certificates.sh 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  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 0 ] ; then
  9. permutation_str=""
  10. else
  11. permutation_str=" -no-permutation-key "
  12. fi
  13. # make symmetric certificate
  14. str="
  15. xrnlib-cli \
  16. --encoding-conf -compiled-param -no-password \
  17. --permutation-conf -arch $architecture $permutation_str \
  18. --make-monomial-key -monomial-key $output_dir/monomial_key_file.xf
  19. "
  20. echo ""; echo $str; echo ""
  21. eval $str
  22. str="
  23. xrnlib-cli \
  24. --decoding-conf -compiled-param -no-password \
  25. --encoding-conf -compiled-param -no-password \
  26. --sequence-conf -xmatrix $matrix_decompressed_file \
  27. --permutation-conf -arch $architecture $permutation_str \
  28. --logging-conf -lib-error-log $output_dir/make_monovalent_key.err \
  29. --make-monovalent-key -monovalent-key $output_dir/monovalent_key_file.xf -polyvalent-key $output_dir/polyvalent_key_file.xf -polyvalent-proof $output_dir/polyvalent_proof_file.xf -start-timestamp 0 -end-timestamp 4294967295
  30. "
  31. echo ""; echo $str; echo ""
  32. eval $str
  33. str="
  34. xrnlib-cli \
  35. --decoding-conf -compiled-param -no-password \
  36. --encoding-conf -compiled-param -no-password \
  37. --arithmetic-conf -monomial-key $output_dir/monomial_key_file.xf \
  38. --sequence-conf -xmatrix $matrix_decompressed_file \
  39. --permutation-conf -arch $architecture \
  40. --make-certificate-symmetric -subject-monovalent-key $output_dir/monovalent_key_file.xf -subject-str \"Alice monovalent key\" -symmetric-certificate $output_dir/symmetric_certificate_file.xf -start-timestamp $(date +%s) -end-timestamp $(expr $(date +%s) + 100)
  41. "
  42. echo ""; echo $str; echo ""
  43. eval $str
  44. # make commitment
  45. str="
  46. xrnlib-cli \
  47. --decoding-conf -compiled-param -no-password \
  48. --encoding-conf -compiled-param -no-password \
  49. --arithmetic-conf -sym-certificate $output_dir/symmetric_certificate_file.xf \
  50. --sequence-conf -xmatrix $matrix_decompressed_file \
  51. --permutation-conf -arch $architecture \
  52. --make-commitment-sym-certificate -monomial-commitment $output_dir/monomial_commitment_file.xf -binomial-commitment $output_dir/binomial_commitment_file.xf
  53. "
  54. echo ""; echo $str; echo ""
  55. eval $str
  56. # generate response
  57. str="
  58. xrnlib-cli \
  59. --decoding-conf -compiled-param -no-password \
  60. --permutation-conf -arch 128 \
  61. --logging-conf -lib-error-log $output_dir/binomial_commitment_128.err -lib-info-log $output_dir/binomial_commitment.info \
  62. --print-header -xrn-file $output_dir/binomial_commitment_file.xf ; \
  63. if grep -q XRN-ERR \"$output_dir/binomial_commitment_128.err\" ; then \
  64. rm $output_dir/binomial_commitment_128.err ; \
  65. rm $output_dir/binomial_commitment.info ; \
  66. xrnlib-cli \
  67. --decoding-conf -compiled-param -no-password \
  68. --permutation-conf -arch 256 \
  69. --logging-conf -lib-error-log $output_dir/binomial_commitment_256.err -lib-info-log $output_dir/binomial_commitment.info \
  70. --print-header -xrn-file $output_dir/binomial_commitment_file.xf ; \
  71. fi
  72. "
  73. echo ""; echo $str; echo ""
  74. eval $str
  75. bob_architecture=$(cat $output_dir/binomial_commitment.info | grep nbits | sed 's/^.*:.// ; s/.$//')
  76. bob_permutation_used=$(cat $output_dir/binomial_commitment.info | grep permutation_used | sed 's/^.*:.//')
  77. if [ "$bob_permutation_used" == "1" ] ; then
  78. bob_permutation_str=""
  79. else
  80. bob_permutation_str=" -no-permutation-key "
  81. fi
  82. str="
  83. xrnlib-cli \
  84. --encoding-conf -compiled-param -no-password \
  85. --permutation-conf -arch $bob_architecture $bob_permutation_str \
  86. --make-response -monomial-response $output_dir/monomial_response_file.xf
  87. "
  88. echo ""; echo $str; echo ""
  89. eval $str
  90. # generate proof
  91. str="
  92. xrnlib-cli \
  93. --decoding-conf -compiled-param -no-password \
  94. --encoding-conf -compiled-param -no-password \
  95. --arithmetic-conf -monomial-key $output_dir/monomial_key_file.xf -sym-certificate $output_dir/symmetric_certificate_file.xf -monomial-commitment $output_dir/monomial_commitment_file.xf -monomial-response $output_dir/monomial_response_file.xf \
  96. --sequence-conf -xmatrix $matrix_decompressed_file \
  97. --permutation-conf -arch $architecture \
  98. --make-monomial-proof-sym-certificate -monomial-proof $output_dir/monomial_proof_file.xf
  99. "
  100. echo ""; echo $str; echo ""
  101. eval $str
  102. # check proof
  103. str="
  104. xrnlib-cli \
  105. --decoding-conf -compiled-param -no-password \
  106. --arithmetic-conf -sym-certificate $output_dir/symmetric_certificate_file.xf -binomial-commitment $output_dir/binomial_commitment_file.xf -monomial-response $output_dir/monomial_response_file.xf -monomial-proof $output_dir/monomial_proof_file.xf \
  107. --sequence-conf -xmatrix $matrix_decompressed_file \
  108. --permutation-conf -arch $bob_architecture \
  109. --logging-conf -lib-info-log $output_dir/lib_info_log_file.xf \
  110. --check-monomial-proof-sym-certificate
  111. "
  112. echo ""; echo $str; echo ""
  113. eval $str
  114. str="
  115. if ! [ -s $output_dir/lib_info_log_file.xf ]; then echo FAIL ; exit ; fi ; \
  116. if cat $output_dir/lib_info_log_file.xf | grep -q 'PASS' ; then echo 'PASS' ; else echo 'FAIL' ; fi
  117. "
  118. echo ""; echo $str; echo ""
  119. eval $str