smime.sh
上传用户:lyxiangda
上传日期:2007-01-12
资源大小:3042k
文件大小:11k
源码类别:

CA认证

开发平台:

WINDOWS

  1. #! /bin/ksh  
  2. #
  3. # This is just a quick script so we can still run our testcases.
  4. # Longer term we need a scriptable test environment..
  5. #
  6. . ../common/init.sh
  7. CURDIR=`pwd`
  8. SMIMEDIR=${HOSTDIR}/smime
  9. CADIR=${SMIMEDIR}/cadir
  10. ALICEDIR=${SMIMEDIR}/alicedir
  11. BOBDIR=${SMIMEDIR}/bobdir
  12. echo "<HTML><BODY>" >> ${RESULTS}
  13. #temporary files
  14. TMP=${TMP-/tmp}
  15. PWFILE=${TMP}/tests.pw.$$
  16. CERTSCRIPT=${TMP}/tests_certs.$$
  17. NOISE_FILE=${TMP}/tests_noise.$$
  18. TEMPFILES="${PWFILE} ${CERTSCRIPT} ${NOISE_FILE}"
  19. #
  20. # should also try to kill any running server
  21. #
  22. trap "rm -f ${TEMPFILES};  exit"  2 3
  23. # Generate noise for our CA cert.
  24. #
  25. # NOTE: these keys are only suitable for testing, as this whole thing bypasses
  26. # the entropy gathering. Don't use this method to generate keys and certs for
  27. # product use or deployment.
  28. #
  29. ps -efl > ${NOISE_FILE} 2>&1
  30. ps aux >> ${NOISE_FILE} 2>&1
  31. netstat >> ${NOISE_FILE} 2>&1
  32. date >> ${NOISE_FILE} 2>&1
  33. mkdir -p ${SMIMEDIR}
  34. mkdir -p ${CADIR}
  35. mkdir -p ${ALICEDIR}
  36. mkdir -p ${BOBDIR}
  37. cd ${CADIR}
  38. #
  39. # build the TEMP CA used for testing purposes
  40. echo "<TABLE BORDER=1><TR><TH COLSPAN=3>Certutil Tests</TH></TR>" >> ${RESULTS}
  41. echo "<TR><TH width=500>Test Case</TH><TH width=50>Result</TH></TR>" >> ${RESULTS}
  42. echo "********************** Creating a CA Certificate **********************"
  43. echo nss > ${PWFILE}
  44. echo "   certutil -N -d ${CADIR} -f ${PWFILE}"
  45. certutil -N -d ${CADIR} -f ${PWFILE}
  46. echo initialized
  47. echo 5 > ${CERTSCRIPT}
  48. echo 9 >> ${CERTSCRIPT}
  49. echo n >> ${CERTSCRIPT}
  50. echo y >> ${CERTSCRIPT}
  51. echo 3 >> ${CERTSCRIPT}
  52. echo n >> ${CERTSCRIPT}
  53. echo 5 >> ${CERTSCRIPT}
  54. echo 6 >> ${CERTSCRIPT}
  55. echo 7 >> ${CERTSCRIPT}
  56. echo 9 >> ${CERTSCRIPT}
  57. echo n >> ${CERTSCRIPT}
  58. echo    "certutil -S -n "TestCA" -s "CN=NSS Test CA, O=BOGUS NSS, L=Mountain View, ST=California, C=US" -t "CTu,CTu,CTu" -v 60 -x -d ${CADIR} -1 -2 -5 -f ${PWFILE} -z ${NOISE_FILE}"
  59. certutil -S -n "TestCA" -s "CN=NSS Test CA, O=BOGUS NSS, L=Mountain View, ST=California, C=US" -t "CTu,CTu,CTu" -v 60 -x -d ${CADIR} -1 -2 -5 -f ${PWFILE} -z ${NOISE_FILE} < ${CERTSCRIPT}
  60. if [ $? -ne 0 ]; then
  61.     echo "<TR><TD>Creating CA Cert</TD><TD bgcolor=red>Failed</TD><TR>" >> ${RESULTS}
  62. else
  63.     echo "<TR><TD>Creating CA Cert</TD><TD bgcolor=lightGreen>Passed</TD><TR>" >> ${RESULTS}
  64. fi
  65. echo "   certutil -L -n "TestCA" -r -d ${CADIR} > root.cert"
  66. certutil -L -n "TestCA" -r -d ${CADIR} > root.cert
  67. if [ $? -ne 0 ]; then
  68.    CERTFAILED=${CERTFAILED-"Export Root"}
  69. fi
  70. echo "**************** Creating Client CA Issued Certificates ****************"
  71. certutil -N -d ${ALICEDIR} -f ${PWFILE}
  72. netstat >> ${NOISE_FILE} 2>&1
  73. date >> ${NOISE_FILE} 2>&1
  74. cd ${ALICEDIR}
  75. echo "Import the root CA"
  76. echo "   certutil -A -n "TestCA" -t "TC,TC,TC" -f ${PWFILE} -d ${ALICEDIR} -i ${CADIR}/root.cert"
  77. certutil -A -n "TestCA" -t "TC,TC,TC" -f ${PWFILE} -d ${ALICEDIR} -i ${CADIR}/root.cert
  78. if [ $? -ne 0 ]; then
  79.    CERTFAILED=${CERTFAILED-"Import Root"}
  80. fi
  81. echo "Generate a Certificate request"
  82. echo  "  certutil -R -s "CN=Alice, E=alice@bogus.com, O=BOGUS Netscape, L=Mountain View, ST=California, C=US" -d ${ALICEDIR}  -f ${PWFILE} -z ${NOISE_FILE} -o req"
  83. certutil -R -s "CN=Alice, E=alice@bogus.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" -d ${ALICEDIR}  -f ${PWFILE} -z ${NOISE_FILE} -o req
  84. if [ $? -ne 0 ]; then
  85.    CERTFAILED=${CERTFAILED-"Generate Request"}
  86. fi
  87. echo "Sign the Certificate request"
  88. echo  "certutil -C -c "TestCA" -m 3 -v 60 -d ${CADIR} -f ${PWFILE} -i req -o alice.cert"
  89. certutil -C -c "TestCA" -m 3 -v 60 -d ${CADIR} -i req -o alice.cert -f ${PWFILE}
  90. if [ $? -ne 0 ]; then
  91.    CERTFAILED=${CERTFAILED-"Sign Alice's Cert"}
  92. fi
  93. echo "Import the new Cert"
  94. echo "certutil -A -n "Alice" -t "u,u,u" -d ${ALICEDIR} -f ${PWFILE} -i alice.cert"
  95. certutil -A -n "Alice" -t "u,u,u" -d ${ALICEDIR} -f ${PWFILE} -i alice.cert
  96. if [ $? -ne 0 ]; then
  97.    CERTFAILED=${CERTFAILED-"Import Alice's cert"}
  98. fi
  99. if [ -n "${CERTFAILED}" ]; then
  100.     echo "<TR><TD>Creating Alice's email cert</TD><TD bgcolor=red>Failed ($CERTFAILED)</TD><TR>" >> ${RESULTS}
  101. else
  102.     echo "<TR><TD>Creating Alice's email cert</TD><TD bgcolor=lightGreen>Passed</TD><TR>" >> ${RESULTS}
  103. fi
  104. netstat >> ${NOISE_FILE} 2>&1
  105. date >> ${NOISE_FILE} 2>&1
  106. certutil -N -d ${BOBDIR} -f ${PWFILE}
  107. cd ${BOBDIR}
  108. echo "Import the root CA"
  109. echo "   certutil -A -n "TestCA" -t "TC,TC,TC" -f ${PWFILE} -d ${BOBDIR} -i ${CADIR}/root.cert"
  110. certutil -A -n "TestCA" -t "TC,TC,TC" -f ${PWFILE} -d ${BOBDIR} -i ${CADIR}/root.cert
  111. if [ $? -ne 0 ]; then
  112.    CERTFAILED=${CERTFAILED-"Import Root"}
  113. fi
  114. echo "Generate a Certificate request"
  115. echo  "  certutil -R -s "CN=Bob, E=bob@bogus.com, O=BOGUS Netscape, L=Mountain View, ST=California, C=US" -d ${BOBDIR}  -f ${PWFILE} -z ${NOISE_FILE} -o req"
  116. certutil -R -s "CN=Bob, E=bob@bogus.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" -d ${BOBDIR}  -f ${PWFILE} -z ${NOISE_FILE} -o req
  117. if [ $? -ne 0 ]; then
  118.    CERTFAILED=${CERTFAILED-"Generate Request"}
  119. fi
  120. echo "Sign the Certificate request"
  121. echo  "certutil -C -c "TestCA" -m 4 -v 60 -d ${CADIR} -f ${PWFILE} -i req -o bob.cert"
  122. certutil -C -c "TestCA" -m 4 -v 60 -d ${CADIR} -i req -o bob.cert -f ${PWFILE}
  123. if [ $? -ne 0 ]; then
  124.    CERTFAILED=${CERTFAILED-"Sign Bob's cert"}
  125. fi
  126. echo "Import the new Cert"
  127. echo "certutil -A -n "Bob" -t "u,u,u" -d ${BOBDIR} -f ${PWFILE} -i bob.cert"
  128. certutil -A -n "Bob" -t "u,u,u" -d ${BOBDIR} -f ${PWFILE} -i bob.cert
  129. if [ $? -ne 0 ]; then
  130.    CERTFAILED=${CERTFAILED-"Import Bob's cert"}
  131. fi
  132. if [ -n "${CERTFAILED}" ]; then
  133.     echo "<TR><TD>Creating Bob's email cert</TD><TD bgcolor=red>Failed ($CERTFAILED)</TD><TR>" >> ${RESULTS}
  134. else
  135.     echo "<TR><TD>Creating Bob's email cert</TD><TD bgcolor=lightGreen>Passed</TD><TR>" >> ${RESULTS}
  136. fi
  137. netstat >> ${NOISE_FILE} 2>&1
  138. date >> ${NOISE_FILE} 2>&1
  139. cd ${CADIR}
  140. echo "Generate a third cert"
  141. echo "certutil -S -n "Dave" -c "TestCA" -t "u,u,u" -s "CN=Dave, E=dave@bogus.com, O=BOGUS Netscape, L=Mountain View, ST=California, C=US" -d ${CADIR} -f ${PWFILE} -z ${NOISE_FILE} -m 5 -v 60"
  142. certutil -S -n "Dave" -c "TestCA" -t "u,u,u" -s "CN=Dave, E=dave@bogus.com, O=BOGUS Netscape, L=Mountain View, ST=California, C=US" -d ${CADIR} -f ${PWFILE} -z ${NOISE_FILE} -m 5 -v 60
  143. echo "Import Alices's cert into Bob's db"
  144. echo "certutil -E -t "u,u,u" -d ${BOBDIR} -f ${PWFILE} -i ${ALICEDIR}/alice.cert"
  145. certutil -E -t "u,u,u" -d ${BOBDIR} -f ${PWFILE} -i ${ALICEDIR}/alice.cert
  146. if [ $? -ne 0 ]; then
  147.    CERTFAILED=${CERTFAILED-"Import Alice's cert into Bob's db"}
  148. fi
  149. echo "Import Bob's cert into Alice's db"
  150. echo "certutil -E -t "u,u,u" -d ${ALICEDIR} -f ${PWFILE} -i ${BOBDIR}/bob.cert"
  151. certutil -E -t "u,u,u" -d ${ALICEDIR} -f ${PWFILE} -i ${BOBDIR}/bob.cert
  152. if [ $? -ne 0 ]; then
  153.    CERTFAILED=${CERTFAILED-"Import Bob's cert into Alice's db"}
  154. fi
  155. echo "Import Dave's cert into Alice's and Bob's dbs"
  156. echo "   certutil -L -n "Dave" -r -d ${CADIR} > dave.cert"
  157. certutil -L -n "Dave" -r -d ${CADIR} > dave.cert
  158. if [ $? -ne 0 ]; then
  159.    CERTFAILED=${CERTFAILED-"Export Dave's cert"}
  160. fi
  161. echo "certutil -E -t "u,u,u" -d ${ALICEDIR} -f ${PWFILE} -i ${CADIR}/dave.cert"
  162. certutil -E -t "u,u,u" -d ${ALICEDIR} -f ${PWFILE} -i ${CADIR}/dave.cert
  163. if [ $? -ne 0 ]; then
  164.    CERTFAILED=${CERTFAILED-"Import Dave's cert into Alice's db"}
  165. fi
  166. echo "certutil -E -t "u,u,u" -d ${BOBDIR} -f ${PWFILE} -i ${CADIR}/dave.cert"
  167. certutil -E -t "u,u,u" -d ${BOBDIR} -f ${PWFILE} -i ${CADIR}/dave.cert
  168. if [ $? -ne 0 ]; then
  169.    CERTFAILED=${CERTFAILED-"Import Dave's cert into Bob's db"}
  170. fi
  171. echo "</TABLE><BR>" >> ${RESULTS}
  172. echo "********************* S/MIME testing  ****************************"
  173. echo "<TABLE BORDER=1><TR><TH COLSPAN=3>S/MIME tests</TH></TR>" >> ${RESULTS}
  174. echo "<TR><TH width=500>Test Case</TH><TH width=50>Result</TH></TR>" >> ${RESULTS}
  175. cd ${SMIMEDIR}
  176. cp ${CURDIR}/alice.txt ${SMIMEDIR}
  177. # Test basic signed and enveloped messages from 1 --> 2
  178. echo "cmsutil -S -N Alice -i alice.txt -d ${ALICEDIR} -p nss -o alice.sig"
  179. cmsutil -S -N Alice -i alice.txt -d ${ALICEDIR} -p nss -o alice.sig
  180. if [ $? -ne 0 ]; then
  181.    CMSFAILED=${CMSFAILED-"Create Signature Alice"}
  182. fi
  183. echo "cmsutil -D -i alice.sig -d ${BOBDIR} -o alice.data1"
  184. cmsutil -D -i alice.sig -d ${BOBDIR} -o alice.data1
  185. if [ $? -ne 0 ]; then
  186.    CMSFAILED=${CMSFAILED-"Decode Alice's Signature"}
  187. fi
  188. echo "diff alice.txt alice.data1"
  189. diff alice.txt alice.data1
  190. if [ $? -ne 0 ]; then
  191.    echo "Signing attached message Failed ($CMSFAILED)" 
  192.    echo "<TR><TD>Signing attached message</TD><TD bgcolor=red>Failed ($CMSFAILED)</TD><TR>" >> ${RESULTS}
  193. else
  194.    echo "Signing attached message Passed" 
  195.    echo "<TR><TD>Signing attached message</TD><TD bgcolor=lightGreen>Passed</TD><TR>" >> ${RESULTS}
  196. fi
  197. echo "cmsutil -E -r bob@bogus.com -i alice.txt -d ${ALICEDIR} -p nss -o alice.env"
  198. cmsutil -E -r bob@bogus.com -i alice.txt -d ${ALICEDIR} -p nss -o alice.env
  199. if [ $? -ne 0 ]; then
  200.    CMSFAILED=${CMSFAILED-"Create Enveloped Data Alice"}
  201. fi
  202. echo "cmsutil -D -i alice.env -d ${BOBDIR} -p nss -o alice.data1"
  203. cmsutil -D -i alice.env -d ${BOBDIR} -p nss -o alice.data1
  204. if [ $? -ne 0 ]; then
  205.    CMSFAILED=${CMSFAILED-"Decode Enveloped Data Alice"}
  206. fi
  207. echo "diff alice.txt alice.data1"
  208. diff alice.txt alice.data1
  209. if [ $? -ne 0 ]; then
  210.    echo "Enveloped Data Failed ($CMSFAILED)" 
  211.    echo "<TR><TD>Enveloped Data</TD><TD bgcolor=red>Failed ($CMSFAILED)</TD><TR>" >> ${RESULTS}
  212. else
  213.    echo "Enveloped Data Passed"
  214.    echo "<TR><TD>Enveloped Data</TD><TD bgcolor=lightGreen>Passed</TD><TR>" >> ${RESULTS}
  215. fi
  216. # multiple recip
  217. #cmsutil -E -i alicecc.txt -d alicedir -o alicecc.env -r bob@bogus.com,dave@bogus.com
  218. #cmsutil -D -i alicecc.env -d bobdir -p nss
  219. #certs-only
  220. echo "cmsutil -O -r "Alice,bob@bogus.com,dave@bogus.com" -d ${ALICEDIR} > co.der"
  221. cmsutil -O -r "Alice,bob@bogus.com,dave@bogus.com" -d ${ALICEDIR} > co.der
  222. if [ $? -ne 0 ]; then
  223.    CMSFAILED=${CMSFAILED-"Create Certs-Only Alice"}
  224. fi
  225. echo "cmsutil -D -i co.der -d ${BOBDIR}"
  226. cmsutil -D -i co.der -d ${BOBDIR}
  227. if [ $? -ne 0 ]; then
  228.    CMSFAILED=${CMSFAILED-"Verify Certs-Only by CA"}
  229. fi
  230. if [ -n "${CMSFAILED}" ]; then
  231.     echo "Sending certs-only message Failed ($CMSFAILED)"
  232.     echo "<TR><TD>Sending certs-only message</TD><TD bgcolor=red>Failed ($CMSFAILED)</TD><TR>" >> ${RESULTS}
  233. else
  234.     echo "Sending certs-only message Passed"
  235.     echo "<TR><TD>Sending certs-only message</TD><TD bgcolor=lightGreen>Passed</TD><TR>" >> ${RESULTS}
  236. fi
  237. echo "cmsutil -C -i alice.txt -e alicehello.env -d ${ALICEDIR} -r "bob@bogus.com" > alice.enc"
  238. cmsutil -C -i alice.txt -e alicehello.env -d ${ALICEDIR} -r "bob@bogus.com" > alice.enc
  239. if [ $? -ne 0 ]; then
  240.    CMSFAILED=${CMSFAILED-"Create Encrypted-Data"}
  241. fi
  242. #echo "cmsutil -C -i bob.txt -e alicehello.env -d ${ALICEDIR} -r "alice@bogus.com" > bob.enc"
  243. #cmsutil -C -i bob.txt -e alicehello.env -d ${ALICEDIR} -r "alice@bogus.com" > bob.enc
  244. if [ $? -ne 0 ]; then
  245.    CMSFAILED=${CMSFAILED-"Create Encrypted-Data"}
  246. fi
  247. echo "cmsutil -D -i alice.enc -d ${BOBDIR} -e alicehello.env -p nss -o alice.data2"
  248. cmsutil -D -i alice.enc -d ${BOBDIR} -e alicehello.env -p nss -o alice.data2
  249. diff alice.txt alice.data2
  250. if [ $? -ne 0 ]; then
  251.    CMSFAILED=${CMSFAILED-"Decode Encrypted-Data"}
  252. fi
  253. if [ -n "${CMSFAILED}" ]; then
  254.     echo "Encrypted-Data message Failed ($CMSFAILED)"
  255.     echo "<TR><TD>Encrypted-Data message</TD><TD bgcolor=red>Failed ($CMSFAILED)</TD><TR>" >> ${RESULTS}
  256. else
  257.     echo "Encrypted-Data message Passed"
  258.     echo "<TR><TD>Encrypted-Data message</TD><TD bgcolor=lightGreen>Passed</TD><TR>" >> ${RESULTS}
  259. fi
  260. echo "</TABLE><BR>" >> ${RESULTS}
  261. rm -f ${TEMPFILES}
  262. cd ${CURDIR}
  263. echo "</BODY></HTML>" >> ${RESULTS}