test.sh 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446
  1. #!/bin/bash
  2. # =============================================================================
  3. # \brief Testing command-line interface
  4. # \project bee2evp/cmd
  5. # \created 2022.06.24
  6. # \version 2023.06.19
  7. # =============================================================================
  8. bee2cmd="${BEE2CMD:-./bee2cmd}"
  9. if [ ! -f "${bee2cmd}" ]; then
  10. bee2cmd=$(command -v bee2cmd)
  11. if [ ! -f "${bee2cmd}" ]; then
  12. echo "Set path to bee2cmd executable file to BEE2CMD environment \
  13. variable or run this script from containing folder."
  14. exit 1
  15. fi
  16. fi
  17. this=$(realpath $BASH_SOURCE)
  18. function pause() {
  19. read -s -n 1 -p "Press any key to continue..."
  20. echo ""
  21. }
  22. test_ver() {
  23. $bee2cmd ver \
  24. || return 1
  25. $bee2cmd ver ver \
  26. && return 1
  27. return 0
  28. }
  29. test_bsum() {
  30. rm -rf check32 check256 \
  31. || return 2
  32. $bee2cmd bsum -bash31 $bee2cmd \
  33. && return 1
  34. $bee2cmd bsum -bash32 $bee2cmd $this > check32 \
  35. || return 1
  36. $bee2cmd bsum -bash32 -c check32 \
  37. || return 1
  38. $bee2cmd bsum $bee2cmd $this > check256 \
  39. || return 1
  40. $bee2cmd bsum -belt-hash -c check256 \
  41. || return 1
  42. $bee2cmd bsum -c check32 \
  43. && return 1
  44. return 0
  45. }
  46. test_pwd() {
  47. rm -rf s1 s2 s3 s4 s5 ss1 ss2 ss3 \
  48. || return 2
  49. $bee2cmd pwd gen pass:zed \
  50. || return 1
  51. $bee2cmd pwd gen pass:"zed" \
  52. || return 1
  53. $bee2cmd pwd gen share:"-t2 -t3 -pass pass:zed s1 s2" \
  54. && return 1
  55. $bee2cmd pwd gen share:"-t3 -pass pass:zed s1 s2" \
  56. && return 1
  57. $bee2cmd pwd gen share:"-l -pass pass:zed s1 s2" \
  58. && return 1
  59. $bee2cmd pwd gen share:"-l12 -pass pass:zed s1 s2" \
  60. && return 1
  61. $bee2cmd pwd gen share:"-l128 -l -pass pass:zed s1 s2" \
  62. && return 1
  63. $bee2cmd pwd gen share:"-l128 -l256 -pass pass:zed s1 s2" \
  64. && return 1
  65. $bee2cmd pwd gen share:"-l128 -crc -t3 -pass pass:zed s1 s2 s3 s4 s5" \
  66. && return 1
  67. $bee2cmd pwd gen share:"-l256 -crc -t3 -pass pass:zed s1 s2 s3 s4 s5" \
  68. || return 1
  69. $bee2cmd pwd val share:"-t3 -pass pass:zed s1 s2" \
  70. && return 1
  71. $bee2cmd pwd val share:"-l -pass pass:zed s1 s2" \
  72. && return 1
  73. $bee2cmd pwd val share:"-l12 -pass pass:zed s1 s2" \
  74. && return 1
  75. $bee2cmd pwd val share:"-l128 -l -pass pass:zed s1 s2" \
  76. && return 1
  77. $bee2cmd pwd val share:"-l128 -l256 -pass pass:zed s1 s2" \
  78. && return 1
  79. $bee2cmd pwd val share:"-l128 -pass pass:zed s1 s2" \
  80. && return 1
  81. $bee2cmd pwd val share:"-l256 -pass pass:zed s1 s2 s3" \
  82. || return 1
  83. $bee2cmd pwd val share:"-l256 -crc -pass pass:zed s1 s2 s3" \
  84. || return 1
  85. $bee2cmd pwd val share:"-pass pass:zed s2 s3 s4 s5" \
  86. || return 1
  87. $bee2cmd pwd val share:"-pass pass:zed -crc s2 s3 s4 s5" \
  88. || return 1
  89. $bee2cmd pwd print share:"-l128 -pass pass:zed s5 s1 s3" \
  90. && return 1
  91. $bee2cmd pwd print share:"-l256 -pass pass:zed s2 s1 s5 s3" \
  92. || return 1
  93. $bee2cmd pwd print share:"-pass pass:zed s1 s2 s3 s4 s5" \
  94. || return 1
  95. $bee2cmd pwd gen \
  96. share:"-l192 -pass share:\"-pass pass:zed s1 s2 s3\" ss1 ss2 ss3" \
  97. || return 1
  98. $bee2cmd pwd val share:"-pass share:\"-pass pass:zed s1 s2 s2\" ss1 ss2" \
  99. && return 1
  100. $bee2cmd pwd val share:"-pass share:\"-pass pass:zed s1 s2 s3\" ss1 ss1" \
  101. && return 1
  102. $bee2cmd pwd val share:"-pass share:\"-pass pass:zed s2 s4 s1\" ss3 ss1" \
  103. || return 1
  104. $bee2cmd pwd print share:"-pass share:\"-pass pass:zed s2 s4 s1\" ss3 ss1" \
  105. || return 1
  106. $bee2cmd pwd print \
  107. share:"-pass share:\"-pass pass:zed s2 s4 s1\" -crc ss3 ss1" \
  108. && return 1
  109. return 0
  110. }
  111. test_kg() {
  112. rm -rf privkey0 privkey1 privkey2 privkey3 pubkey1 pubkey2 pubkey3 \
  113. || return 2
  114. $bee2cmd kg gen -l256 -pass share:"-pass pass:zed s2 s3 s4" \
  115. && return 1
  116. $bee2cmd kg gen -l256 -pass share:"-pass pass:zed s2 s3 s4" -pass pass:zed \
  117. && return 1
  118. $bee2cmd kg gen -l256 -l192 -pass share:"-pass pass:zed s2 s3 s4" privkey0 \
  119. && return 1
  120. $bee2cmd kg gen -l256 -pass share:"-pass pass:zed s2 s3 s4" privkey0 \
  121. || return 1
  122. $bee2cmd kg val -pass share:"-pass pass:zed s1 s2 s4" privkey0 \
  123. || return 1
  124. $bee2cmd kg chp -passin share:"-pass pass:zed s3 s1 s4" \
  125. -passout pass:"root" privkey0 \
  126. || return 1
  127. $bee2cmd kg print -pass pass:root privkey0 \
  128. || return 1
  129. $bee2cmd kg gen -pass pass:trent -l192 privkey1 \
  130. || return 1
  131. pubkey1="$($bee2cmd kg print -pass pass:"trent" privkey1)"
  132. if [ ${#pubkey1} != "192" ]; then
  133. return 1
  134. fi
  135. $bee2cmd kg gen -pass pass:alice privkey2 \
  136. || return 1
  137. $bee2cmd kg extr -pass pass:alice privkey2 pubkey2 \
  138. || return 1
  139. if [ "$(wc -c pubkey2 | awk '{print $1}')" != "64" ]; then
  140. return 1
  141. fi
  142. $bee2cmd kg gen -l96 -pass pass:bob privkey3 \
  143. || return 1
  144. $bee2cmd kg extr -pass pass:bob privkey3 pubkey3 \
  145. || return 1
  146. return 0
  147. }
  148. test_cvc() {
  149. rm -rf cert0 req1 cert1 pubkey1 req2 req21 cert2 req3 cert3 \
  150. || return 2
  151. $bee2cmd cvc root -authority BYCA0000 -from 220707 -until 990707 \
  152. -pass pass:root -eid EEEEEEEEEE -esign 7777 privkey0 cert0 \
  153. || return 1
  154. $bee2cmd cvc print cert0 \
  155. || return 1
  156. $bee2cmd cvc req -pass pass:trent -authority BYCA0000 -holder BYCA1000 \
  157. -from 220711 -until 221231 -eid FFFFFFFFFF -esign 7777 privkey1 req1 \
  158. || return 1
  159. $bee2cmd cvc print req1 \
  160. || return 1
  161. $bee2cmd cvc iss -authority BYCA0000 -pass pass:root privkey0 cert0 \
  162. req1 cert1 \
  163. && return 1
  164. $bee2cmd cvc iss -from 220712 -until 221130 -holder BYCA1023 \
  165. -eid DDDDDDDDDD -esign BBBB -pass pass:root privkey0 cert0 req1 cert1 \
  166. || return 1
  167. $bee2cmd cvc print cert1 \
  168. || return 1
  169. $bee2cmd cvc extr cert1 pubkey1 \
  170. || return 1
  171. if [ "$(wc -c pubkey1 | awk '{print $1}')" != "96" ]; then
  172. return 1
  173. fi
  174. $bee2cmd cvc req -authority BYCA1023 -from 220712 -until 391231 -esign 1111 \
  175. -holder "590082394654" -pass pass:alice -eid 8888888888 privkey2 req2 \
  176. || return 1
  177. $bee2cmd cvc req -authority BYCA1023 -from 000000 -until 000000 \
  178. -holder "590082394654" -pass pass:alice privkey2 req21 \
  179. || return 1
  180. $bee2cmd cvc iss -pass pass:trent privkey1 cert1 req2 cert2 \
  181. || return 1
  182. $bee2cmd cvc match -pass pass:alice privkey2 cert2 \
  183. || return 1
  184. $bee2cmd cvc match -pass pass:alisa privkey2 cert2 \
  185. && return 1
  186. $bee2cmd cvc print cert2 \
  187. || return 1
  188. if [ "$($bee2cmd cvc print -from cert1)" != "220712" ]; then
  189. return 1
  190. fi
  191. if [ "$($bee2cmd cvc print -until cert1)" != "221130" ]; then
  192. return 1
  193. fi
  194. if [ "$($bee2cmd cvc print -eid cert1)" != "DDDDDDDDDD" ]; then
  195. return 1
  196. fi
  197. if [ "$($bee2cmd cvc print -esign cert1)" != "3333" ]; then
  198. return 1
  199. fi
  200. $bee2cmd cvc val cert0 cert0 \
  201. || return 1
  202. $bee2cmd cvc val -date 220707 cert0 cert1 \
  203. && return 1
  204. $bee2cmd cvc val -date 220712 cert0 cert1 \
  205. || return 1
  206. $bee2cmd cvc val -date 220707 cert0 cert1 cert2 \
  207. && return 1
  208. $bee2cmd cvc val -date 220712 cert0 cert1 cert2 \
  209. || return 1
  210. $bee2cmd cvc val -date 220712 cert0 cert1 cert2 \
  211. || return 1
  212. $bee2cmd cvc val -date 221201 cert0 cert1 cert2 \
  213. || return 1
  214. $bee2cmd cvc val -date 400101 cert0 cert1 cert2 \
  215. && return 1
  216. $bee2cmd cvc val -date cert0 cert1 cert2 \
  217. && return 1
  218. $bee2cmd cvc val cert0 cert1 cert2 \
  219. || return 1
  220. $bee2cmd cvc shorten -pass pass:trent -until 391230 privkey1 cert1 cert2 \
  221. || return 1
  222. $bee2cmd cvc val cert0 cert1 cert2 \
  223. || return 1
  224. if [ "$($bee2cmd cvc print -until cert2)" != "391230" ]; then
  225. return 1
  226. fi
  227. $bee2cmd cvc req -authority BYCA1023 -from 221030 -until 391231 \
  228. -holder 590082394655 -pass pass:bob privkey3 req3 \
  229. || return 1
  230. $bee2cmd cvc print req3 \
  231. || return 1
  232. $bee2cmd cvc iss -pass pass:trent privkey1 cert1 req3 cert3 \
  233. || return 1
  234. return 0
  235. }
  236. test_sig(){
  237. rm -rf ss ff cert01 cert11 cert21 body sig\
  238. || return 2
  239. echo test> ff
  240. echo sig> ss
  241. $bee2cmd sig val -pubkey pubkey2 ff ss \
  242. && return 1
  243. $bee2cmd sig val -anchor cert0 ff ss \
  244. && return 1
  245. $bee2cmd sig val -anchor cert2 ff ss \
  246. && return 1
  247. $bee2cmd sig val -pubkey pubkey2 ff ff \
  248. && return 1
  249. $bee2cmd sig val -anchor cert0 ff ff \
  250. && return 1
  251. $bee2cmd sig val -anchor cert2 ff ff \
  252. && return 1
  253. rm -rf ss
  254. $bee2cmd sig sign -date 400101 -certs "cert1 cert2" -pass pass:alice \
  255. privkey2 ff ss \
  256. && return 1
  257. $bee2cmd sig sign -date 230526 -certs "cert1 cert2" -pass pass:alice \
  258. privkey2 ff ss \
  259. || return 1
  260. $bee2cmd sig val -pubkey pubkey2 ff ss \
  261. || return 1
  262. $bee2cmd sig val -anchor cert2 ff ss \
  263. || return 1
  264. $bee2cmd sig val -anchor cert1 ff ss \
  265. || return 1
  266. $bee2cmd sig val -anchor cert0 ff ss \
  267. && return 1
  268. $bee2cmd sig sign -certs "cert0 cert1 cert2" -pass pass:alice privkey2 ff ff \
  269. || return 1
  270. $bee2cmd sig extr -cert0 ff cert01 \
  271. || return 1
  272. diff cert0 cert01 \
  273. || return 1
  274. $bee2cmd sig extr -cert1 ff cert11 \
  275. || return 1
  276. diff cert1 cert11 \
  277. || return 1
  278. $bee2cmd sig extr -cert2 ff cert21 \
  279. || return 1
  280. diff cert2 cert21 \
  281. || return 1
  282. $bee2cmd sig extr -body ff body \
  283. || return 1
  284. if [[ $(< body) != "test" ]]; then
  285. return 1
  286. fi
  287. $bee2cmd sig extr -sig ff sig \
  288. || return 1
  289. $bee2cmd sig val -pubkey pubkey2 ff ff \
  290. || return 1
  291. $bee2cmd sig val -anchor cert2 ff ff \
  292. || return 1
  293. $bee2cmd sig val -anchor cert1 ff ff \
  294. || return 1
  295. $bee2cmd sig val -anchor cert0 ff ff \
  296. || return 1
  297. rm -rf ss body
  298. $bee2cmd sig sign -certs cert2 -pass pass:alice privkey2 ff ss \
  299. || return 1
  300. $bee2cmd sig print ss \
  301. || return 1
  302. $bee2cmd sig val -pubkey pubkey2 ff ss \
  303. || return 1
  304. $bee2cmd sig val -anchor cert2 ff ss \
  305. || return 1
  306. $bee2cmd sig val -anchor cert1 ff ss \
  307. && return 1
  308. $bee2cmd sig extr -body ss body \
  309. && return 1
  310. $bee2cmd sig sign -pass pass:alice -date 230526 privkey2 ff ff \
  311. || return 1
  312. $bee2cmd sig val -pubkey pubkey2 ff ff \
  313. || return 1
  314. $bee2cmd sig val -anchor cert2 ff ff \
  315. && return 1
  316. $bee2cmd sig print ff \
  317. || return 1
  318. $bee2cmd sig print ss \
  319. || return 1
  320. $bee2cmd sig print -date ss \
  321. && return 1
  322. if [ "$($bee2cmd sig print -certc ss)" != "1" ]; then
  323. return 1
  324. fi
  325. $bee2cmd sig sign -pass pass:bob -certs "cert1 cert3" privkey3 ff ff \
  326. || return 1
  327. $bee2cmd sig val -pubkey pubkey3 ff ff \
  328. || return 1
  329. $bee2cmd sig val -anchor cert1 ff ff \
  330. || return 1
  331. $bee2cmd sig val -anchor cert3 ff ff \
  332. || return 1
  333. return 0
  334. }
  335. test_cvr(){
  336. rm -rf ring2 cert21 cert31 \
  337. || return 2
  338. $bee2cmd cvr init -pass pass:alice privkey2 cert2 ring2 \
  339. || return 1
  340. $bee2cmd cvr add -pass pass:alice privkey2 cert2 cert3 ring2 \
  341. || return 1
  342. $bee2cmd cvr add -pass pass:alice privkey2 cert2 cert3 ring2 \
  343. && return 1
  344. $bee2cmd cvr val cert2 ring2 \
  345. || return 1
  346. $bee2cmd sig val -anchor cert2 ring2 ring2 \
  347. || return 1
  348. $bee2cmd cvr find ring2 cert3 \
  349. || return 1
  350. $bee2cmd cvr find ring2 cert2 \
  351. && return 1
  352. $bee2cmd cvr extr -cert0 ring2 cert31 \
  353. || return 1
  354. diff cert3 cert31 \
  355. || return 1
  356. $bee2cmd sig extr -cert0 ring2 cert21 \
  357. || return 1
  358. diff cert2 cert21 \
  359. || return 1
  360. $bee2cmd cvr print ring2 \
  361. || return 1
  362. $bee2cmd cvr print -certc ring2 \
  363. || return 1
  364. $bee2cmd sig print ring2 \
  365. || return 1
  366. $bee2cmd cvr add -pass pass:alice privkey2 cert2 cert0 ring2 \
  367. || return 1
  368. $bee2cmd cvr add -pass pass:alice privkey2 cert2 cert1 ring2 \
  369. || return 1
  370. if [ "$($bee2cmd cvr print -certc ring2)" != "3" ]; then
  371. return 1
  372. fi
  373. $bee2cmd cvr del -pass pass:alice privkey2 cert2 cert1 ring2 \
  374. || return 1
  375. $bee2cmd cvr del -pass pass:alice privkey2 cert2 cert0 ring2 \
  376. || return 1
  377. $bee2cmd cvr del -pass pass:alice privkey2 cert2 cert0 ring2 \
  378. return 0
  379. }
  380. test_es() {
  381. rm -rf dd\
  382. || return 2
  383. $bee2cmd es print \
  384. || return 1
  385. $bee2cmd es read sys 1 dd \
  386. || return 1
  387. if [ "$(wc -c dd | awk '{print $1}')" != "1024" ]; then
  388. return 1
  389. fi
  390. return 0
  391. }
  392. run_test() {
  393. echo -n "Testing $1... "
  394. (test_$1 > /dev/null 2>&1)
  395. if [ $? -eq 0 ]; then
  396. echo "Success"
  397. else
  398. echo "Failed"
  399. fi
  400. }
  401. run_test ver && run_test bsum && run_test pwd && run_test kg && run_test cvc \
  402. && run_test sig && run_test cvr && run_test es