test.sh 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382
  1. #!/bin/bash
  2. # =============================================================================
  3. # \brief Testing command-line interface
  4. # \project bee2evp/cmd
  5. # \created 2022.06.24
  6. # \version 2023.03.16
  7. # =============================================================================
  8. bee2cmd=./bee2cmd
  9. this=$(basename $BASH_SOURCE)
  10. function pause() {
  11. read -s -n 1 -p "Press any key to continue..."
  12. echo ""
  13. }
  14. test_ver() {
  15. $bee2cmd ver \
  16. || return 1
  17. $bee2cmd ver ver \
  18. && return 1
  19. return 0
  20. }
  21. test_bsum() {
  22. rm -rf check32 check256 \
  23. || return 2
  24. $bee2cmd bsum -bash31 $bee2cmd \
  25. && return 1
  26. $bee2cmd bsum -bash32 $bee2cmd $this > check32 \
  27. || return 1
  28. $bee2cmd bsum -bash32 -c check32 \
  29. || return 1
  30. $bee2cmd bsum $bee2cmd $this > check256 \
  31. || return 1
  32. $bee2cmd bsum -belt-hash -c check256 \
  33. || return 1
  34. $bee2cmd bsum -c check32 \
  35. && return 1
  36. return 0
  37. }
  38. test_pwd() {
  39. rm -rf s1 s2 s3 s4 s5 ss1 ss2 ss3 \
  40. || return 2
  41. $bee2cmd pwd gen pass:zed \
  42. || return 1
  43. $bee2cmd pwd gen pass:"zed" \
  44. || return 1
  45. $bee2cmd pwd gen share:"-t2 -t3 -pass pass:zed s1 s2" \
  46. && return 1
  47. $bee2cmd pwd gen share:"-t3 -pass pass:zed s1 s2" \
  48. && return 1
  49. $bee2cmd pwd gen share:"-l -pass pass:zed s1 s2" \
  50. && return 1
  51. $bee2cmd pwd gen share:"-l12 -pass pass:zed s1 s2" \
  52. && return 1
  53. $bee2cmd pwd gen share:"-l128 -l -pass pass:zed s1 s2" \
  54. && return 1
  55. $bee2cmd pwd gen share:"-l128 -l256 -pass pass:zed s1 s2" \
  56. && return 1
  57. $bee2cmd pwd gen share:"-l256 -t3 -pass pass:zed s1 s2 s3 s4 s5" \
  58. || return 1
  59. $bee2cmd pwd val share:"-t3 -pass pass:zed s1 s2" \
  60. && return 1
  61. $bee2cmd pwd val share:"-l -pass pass:zed s1 s2" \
  62. && return 1
  63. $bee2cmd pwd val share:"-l12 -pass pass:zed s1 s2" \
  64. && return 1
  65. $bee2cmd pwd val share:"-l128 -l -pass pass:zed s1 s2" \
  66. && return 1
  67. $bee2cmd pwd val share:"-l128 -l256 -pass pass:zed s1 s2" \
  68. && return 1
  69. $bee2cmd pwd val share:"-l128 -pass pass:zed s1 s2" \
  70. && return 1
  71. $bee2cmd pwd val share:"-l256 -pass pass:zed s1 s2 s3" \
  72. || return 1
  73. $bee2cmd pwd val share:"-pass pass:zed s2 s3 s4 s5" \
  74. || return 1
  75. $bee2cmd pwd print share:"-l128 -pass pass:zed s5 s1 s3" \
  76. && return 1
  77. $bee2cmd pwd print share:"-l256 -pass pass:zed s2 s1 s5 s3" \
  78. || return 1
  79. $bee2cmd pwd print share:"-pass pass:zed s1 s2 s3 s4 s5" \
  80. || return 1
  81. $bee2cmd pwd gen \
  82. share:"-l192 -pass share:\"-pass pass:zed s1 s2 s3\" ss1 ss2 ss3" \
  83. || return 1
  84. $bee2cmd pwd val share:"-pass share:\"-pass pass:zed s1 s2 s2\" ss1 ss2" \
  85. && return 1
  86. $bee2cmd pwd val share:"-pass share:\"-pass pass:zed s1 s2 s3\" ss1 ss1" \
  87. && return 1
  88. $bee2cmd pwd val share:"-pass share:\"-pass pass:zed s2 s4 s1\" ss3 ss1" \
  89. || return 1
  90. $bee2cmd pwd print share:"-pass share:\"-pass pass:zed s2 s4 s1\" ss3 ss1" \
  91. || return 1
  92. return 0
  93. }
  94. test_kg() {
  95. rm -rf privkey0 privkey1 privkey2 pubkey1 pubkey2 \
  96. || return 2
  97. $bee2cmd kg gen -l256 -pass share:"-pass pass:zed s2 s3 s4" \
  98. && return 1
  99. $bee2cmd kg gen -l256 -pass share:"-pass pass:zed s2 s3 s4" -pass pass:zed \
  100. && return 1
  101. $bee2cmd kg gen -l256 -l192 -pass share:"-pass pass:zed s2 s3 s4" privkey0 \
  102. && return 1
  103. $bee2cmd kg gen -l256 -pass share:"-pass pass:zed s2 s3 s4" privkey0 \
  104. || return 1
  105. $bee2cmd kg val -pass share:"-pass pass:zed s1 s2 s4" privkey0 \
  106. || return 1
  107. $bee2cmd kg chp -passin share:"-pass pass:zed s3 s1 s4" \
  108. -passout pass:"root" privkey0 \
  109. || return 1
  110. $bee2cmd kg print -pass pass:root privkey0 \
  111. || return 1
  112. $bee2cmd kg gen -pass pass:trent -l192 privkey1 \
  113. || return 1
  114. pubkey1="$($bee2cmd kg print -pass pass:"trent" privkey1)"
  115. if [ ${#pubkey1} != "192" ]; then
  116. return 1
  117. fi
  118. $bee2cmd kg gen -pass pass:alice privkey2 \
  119. || return 1
  120. $bee2cmd kg pub -pass pass:alice privkey2 pubkey2 \
  121. || return 1
  122. if [ "$(wc -c pubkey2 | awk '{print $1}')" != "64" ]; then
  123. return 1
  124. fi
  125. return 0
  126. }
  127. test_cvc() {
  128. rm -rf cert0 cert1 cert2 req1 req2 \
  129. || return 2
  130. $bee2cmd cvc root -authority BYCA0000 -from 220707 -until 990707 \
  131. -pass pass:root -eid EEEEEEEEEE -esign 7777 privkey0 cert0 \
  132. || return 1
  133. $bee2cmd cvc print cert0 \
  134. || return 1
  135. $bee2cmd cvc req -pass pass:trent -authority BYCA0000 -holder BYCA1000 \
  136. -from 220712 -until 221130 -eid DDDDDDDDDD -esign 3333 privkey1 req1 \
  137. || return 1
  138. $bee2cmd cvc print req1 \
  139. || return 1
  140. $bee2cmd cvc iss -pass pass:root privkey0 cert0 req1 cert1 \
  141. || return 1
  142. $bee2cmd cvc print cert1 \
  143. || return 1
  144. $bee2cmd cvc req -authority BYCA1000 -from 220712 -until 391231 -esign 1111 \
  145. -holder "590082394654" -pass pass:alice -eid 8888888888 privkey2 req2 \
  146. || return 1
  147. $bee2cmd cvc iss -pass pass:trent privkey1 cert1 req2 cert2 \
  148. || return 1
  149. $bee2cmd cvc match -pass pass:alice privkey2 cert2 \
  150. || return 1
  151. $bee2cmd cvc match -pass pass:alisa privkey2 cert2 \
  152. || return 1
  153. $bee2cmd cvc print cert2 \
  154. || return 1
  155. $bee2cmd cvc val cert0 cert0 \
  156. || return 1
  157. $bee2cmd cvc val -date 220707 cert0 cert1 \
  158. && return 1
  159. $bee2cmd cvc val -date 220712 cert0 cert1 \
  160. || return 1
  161. $bee2cmd cvc val -date 220707 cert0 cert1 cert2 \
  162. && return 1
  163. $bee2cmd cvc val -date 220712 cert0 cert1 cert2 \
  164. || return 1
  165. $bee2cmd cvc val -date 220712 cert0 cert1 cert2 \
  166. || return 1
  167. $bee2cmd cvc val -date 221201 cert0 cert1 cert2 \
  168. || return 1
  169. $bee2cmd cvc val -date 400101 cert0 cert1 cert2 \
  170. && return 1
  171. return 0
  172. }
  173. test_sig(){
  174. rm -rf ss ff\
  175. || return 2
  176. echo test > ff
  177. echo sig > ss
  178. $bee2cmd sig vfy -pubkey pubkey2 ff ss \
  179. && return 1
  180. $bee2cmd sig vfy -anchor cert0 ff ss \
  181. && return 1
  182. $bee2cmd sig vfy -anchor cert2 ff ss \
  183. && return 1
  184. $bee2cmd sig vfy -pubkey pubkey2 ff ff \
  185. && return 1
  186. $bee2cmd sig vfy -anchor cert0 ff ff \
  187. && return 1
  188. $bee2cmd sig vfy -anchor cert2 ff ff \
  189. && return 1
  190. rm -rf ss
  191. $bee2cmd sig sign -certs "cert2 cert1" -pass pass:alice privkey2 ff ss \
  192. || return 1
  193. $bee2cmd sig vfy -pubkey pubkey2 ff ss \
  194. || return 1
  195. $bee2cmd sig vfy -anchor cert2 ff ss \
  196. || return 1
  197. $bee2cmd sig vfy -anchor cert1 ff ss \
  198. || return 1
  199. $bee2cmd sig vfy -anchor cert0 ff ss \
  200. && return 1
  201. $bee2cmd sig sign -certs "cert2 cert1 cert0" -pass pass:alice privkey2 ff ff \
  202. || return 1
  203. $bee2cmd sig vfy -pubkey pubkey2 ff ff \
  204. || return 1
  205. $bee2cmd sig vfy -anchor cert2 ff ff \
  206. || return 1
  207. $bee2cmd sig vfy -anchor cert1 ff ff \
  208. || return 1
  209. $bee2cmd sig vfy -anchor cert0 ff ff \
  210. || return 1
  211. rm -rf ss
  212. $bee2cmd sig sign -certs cert2 -pass pass:alice privkey2 ff ss \
  213. || return 1
  214. $bee2cmd sig print ss \
  215. || return 1
  216. $bee2cmd sig vfy -pubkey pubkey2 ff ss \
  217. || return 1
  218. $bee2cmd sig vfy -anchor cert2 ff ss \
  219. || return 1
  220. $bee2cmd sig vfy -anchor cert1 ff ss \
  221. && return 1
  222. $bee2cmd sig sign -pass pass:alice privkey2 ff ff \
  223. || return 1
  224. $bee2cmd sig vfy -pubkey pubkey2 ff ff \
  225. || return 1
  226. $bee2cmd sig vfy -anchor cert2 ff ff \
  227. && return 1
  228. $bee2cmd sig print ff \
  229. || return 1
  230. return 0
  231. }
  232. test_es() {
  233. rm -rf dd\
  234. || return 2
  235. $bee2cmd es print \
  236. || return 1
  237. $bee2cmd es read sys 1 dd \
  238. || return 1
  239. if [ "$(wc -c dd | awk '{print $1}')" != "1024" ]; then
  240. return 1
  241. fi
  242. return 0
  243. }
  244. test_bacc(){
  245. for l in 128; do
  246. rm acc key1 key2 key3 key4 cert_1 cert_2 cert_3 cert_4 req1 req2 req3 req4
  247. $bee2cmd kg gen -pass pass:key -l$l key1 \
  248. || return 1
  249. $bee2cmd kg gen -pass pass:key -l$l key2 \
  250. || return 1
  251. $bee2cmd kg gen -pass pass:key -l$l key3 \
  252. || return 1
  253. $bee2cmd kg gen -pass pass:key -l$l key4 \
  254. || return 1
  255. $bee2cmd cvc req -authority BYCA1000 -from 220712 -until 391231 -esign 1111 \
  256. -holder "590082394654" -pass pass:key -eid 8888888888 key1 req1 \
  257. || return 1
  258. $bee2cmd cvc req -authority BYCA1000 -from 220712 -until 391231 -esign 1111 \
  259. -holder "590082394654" -pass pass:key -eid 8888888888 key2 req2 \
  260. || return 1
  261. $bee2cmd cvc req -authority BYCA1000 -from 220712 -until 391231 -esign 1111 \
  262. -holder "590082394654" -pass pass:key -eid 8888888888 key3 req3 \
  263. || return 1
  264. $bee2cmd cvc req -authority BYCA1000 -from 220712 -until 391231 -esign 1111 \
  265. -holder "590082394654" -pass pass:key -eid 8888888888 key4 req4 \
  266. || return 1
  267. $bee2cmd cvc iss -pass pass:trent privkey1 cert1 req1 cert_1 \
  268. || return 1
  269. $bee2cmd cvc iss -pass pass:trent privkey1 cert1 req2 cert_2 \
  270. || return 1
  271. $bee2cmd cvc iss -pass pass:trent privkey1 cert1 req3 cert_3 \
  272. || return 1
  273. $bee2cmd cvc iss -pass pass:trent privkey1 cert1 req4 cert_4 \
  274. || return 1
  275. $bee2cmd bacc init -name "name" -l$l acc \
  276. || return 1
  277. $bee2cmd bacc add -cert "cert_2 cert1" -pass pass:key key1 -sigpass pass:key key2 acc \
  278. || return 1
  279. $bee2cmd bacc add -cert "cert_3 cert1" -pass pass:key key2 -sigpass pass:key key3 acc \
  280. || return 1
  281. $bee2cmd bacc add -cert "cert_1 cert1" -pass pass:key key3 -sigpass pass:key key1 acc \
  282. || return 1
  283. $bee2cmd bacc validate acc cert1 \
  284. || return 1
  285. $bee2cmd bacc validate -name "name" acc cert1 \
  286. || return 1
  287. $bee2cmd bacc validate -name "name1" acc cert1 \
  288. && return 1
  289. rm pubkey1 pubkey2 pubkey3 pubkey4 acc_final
  290. $bee2cmd bacc extract acc acc_final \
  291. || return 1
  292. $bee2cmd bacc der -pass pass:key key1 acc_final pubkey1 \
  293. || return 1
  294. $bee2cmd bacc der -pass pass:key key2 acc_final pubkey2 \
  295. || return 1
  296. $bee2cmd bacc der -pass pass:key key3 acc_final pubkey3 \
  297. || return 1
  298. $bee2cmd bacc der -pass pass:key key4 acc_final pubkey4 \
  299. && return 1
  300. rm proof
  301. $bee2cmd bacc prvder -pass pass:key key1 acc_final proof \
  302. || return 1
  303. $bee2cmd bacc vfyder pubkey1 acc_final proof \
  304. || return 1
  305. rm proof
  306. $bee2cmd bacc prvder -adata key1 -pass pass:key key2 acc_final proof \
  307. || return 1
  308. $bee2cmd bacc vfyder -adata key1 pubkey2 acc_final proof \
  309. || return 1
  310. rm proof
  311. $bee2cmd bacc prvder -adata key1 -pass pass:key key3 acc_final proof \
  312. || return 1
  313. $bee2cmd bacc vfyder -adata key1 pubkey acc_final proof \
  314. && return 1
  315. $bee2cmd bacc prvder -pass pass:key key acc_final proof \
  316. && return 1
  317. done
  318. return 0
  319. }
  320. run_test() {
  321. echo -n "Testing $1... "
  322. (test_$1 > /dev/null 2>&1)
  323. if [ $? -eq 0 ]; then
  324. echo "Success"
  325. else
  326. echo "Failed"
  327. fi
  328. }
  329. run_test ver && run_test bsum && run_test pwd && run_test kg && run_test cvc \
  330. && run_test sig && run_test es && run_test bacc