xmlsec-shim 1.2.18.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (969) hide show
  1. data/.gitignore +17 -0
  2. data/Gemfile +4 -0
  3. data/README.md +2 -0
  4. data/Rakefile +2 -0
  5. data/ext/xmlsec/extconf.rb +14 -0
  6. data/lib/xmlsec-shim.rb +27 -0
  7. data/lib/xmlsec-shim/version.rb +5 -0
  8. data/vendor/xmlsec1-1.2.18/AUTHORS +8 -0
  9. data/vendor/xmlsec1-1.2.18/COPYING +105 -0
  10. data/vendor/xmlsec1-1.2.18/ChangeLog +1810 -0
  11. data/vendor/xmlsec1-1.2.18/Copyright +105 -0
  12. data/vendor/xmlsec1-1.2.18/HACKING +199 -0
  13. data/vendor/xmlsec1-1.2.18/INSTALL +38 -0
  14. data/vendor/xmlsec1-1.2.18/Makefile.am +186 -0
  15. data/vendor/xmlsec1-1.2.18/Makefile.in +1155 -0
  16. data/vendor/xmlsec1-1.2.18/NEWS +1 -0
  17. data/vendor/xmlsec1-1.2.18/README +15 -0
  18. data/vendor/xmlsec1-1.2.18/TODO +156 -0
  19. data/vendor/xmlsec1-1.2.18/aclocal.m4 +1197 -0
  20. data/vendor/xmlsec1-1.2.18/apps/Makefile.am +84 -0
  21. data/vendor/xmlsec1-1.2.18/apps/Makefile.in +694 -0
  22. data/vendor/xmlsec1-1.2.18/apps/cmdline.c +355 -0
  23. data/vendor/xmlsec1-1.2.18/apps/cmdline.h +89 -0
  24. data/vendor/xmlsec1-1.2.18/apps/crypto.c +396 -0
  25. data/vendor/xmlsec1-1.2.18/apps/crypto.h +70 -0
  26. data/vendor/xmlsec1-1.2.18/apps/xmlsec.c +3058 -0
  27. data/vendor/xmlsec1-1.2.18/config.guess +1502 -0
  28. data/vendor/xmlsec1-1.2.18/config.h.in +134 -0
  29. data/vendor/xmlsec1-1.2.18/config.sub +1714 -0
  30. data/vendor/xmlsec1-1.2.18/configure +17363 -0
  31. data/vendor/xmlsec1-1.2.18/configure.in +1633 -0
  32. data/vendor/xmlsec1-1.2.18/depcomp +630 -0
  33. data/vendor/xmlsec1-1.2.18/docs/Makefile.am +65 -0
  34. data/vendor/xmlsec1-1.2.18/docs/Makefile.in +721 -0
  35. data/vendor/xmlsec1-1.2.18/docs/api/Makefile.am +209 -0
  36. data/vendor/xmlsec1-1.2.18/docs/api/Makefile.in +664 -0
  37. data/vendor/xmlsec1-1.2.18/docs/api/chapters/compiling-and-linking.sgml +252 -0
  38. data/vendor/xmlsec1-1.2.18/docs/api/chapters/creating-templates.sgml +325 -0
  39. data/vendor/xmlsec1-1.2.18/docs/api/chapters/examples.sgml +102 -0
  40. data/vendor/xmlsec1-1.2.18/docs/api/chapters/init-and-shutdown.sgml +104 -0
  41. data/vendor/xmlsec1-1.2.18/docs/api/chapters/new-crypto.sgml +487 -0
  42. data/vendor/xmlsec1-1.2.18/docs/api/chapters/sign-and-encrypt.sgml +286 -0
  43. data/vendor/xmlsec1-1.2.18/docs/api/chapters/using-contexts.sgml +138 -0
  44. data/vendor/xmlsec1-1.2.18/docs/api/chapters/using-keys.sgml +26 -0
  45. data/vendor/xmlsec1-1.2.18/docs/api/chapters/using-keysmngr.sgml +592 -0
  46. data/vendor/xmlsec1-1.2.18/docs/api/chapters/using-transforms.sgml +67 -0
  47. data/vendor/xmlsec1-1.2.18/docs/api/chapters/using-x509-certs.sgml +197 -0
  48. data/vendor/xmlsec1-1.2.18/docs/api/chapters/verify-and-decrypt.sgml +265 -0
  49. data/vendor/xmlsec1-1.2.18/docs/api/home.png +0 -0
  50. data/vendor/xmlsec1-1.2.18/docs/api/images/diagrams.sxd +0 -0
  51. data/vendor/xmlsec1-1.2.18/docs/api/images/encryption-structure.png +0 -0
  52. data/vendor/xmlsec1-1.2.18/docs/api/images/key.png +0 -0
  53. data/vendor/xmlsec1-1.2.18/docs/api/images/keysmngr.png +0 -0
  54. data/vendor/xmlsec1-1.2.18/docs/api/images/sign-enc-model.png +0 -0
  55. data/vendor/xmlsec1-1.2.18/docs/api/images/signature-structure.png +0 -0
  56. data/vendor/xmlsec1-1.2.18/docs/api/images/structure.png +0 -0
  57. data/vendor/xmlsec1-1.2.18/docs/api/images/transform.png +0 -0
  58. data/vendor/xmlsec1-1.2.18/docs/api/images/transforms-chain.png +0 -0
  59. data/vendor/xmlsec1-1.2.18/docs/api/images/verif-dec-model.png +0 -0
  60. data/vendor/xmlsec1-1.2.18/docs/api/index.html +307 -0
  61. data/vendor/xmlsec1-1.2.18/docs/api/index.sgml +43 -0
  62. data/vendor/xmlsec1-1.2.18/docs/api/left.png +0 -0
  63. data/vendor/xmlsec1-1.2.18/docs/api/right.png +0 -0
  64. data/vendor/xmlsec1-1.2.18/docs/api/up.png +0 -0
  65. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-app.html +1525 -0
  66. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-base64.html +357 -0
  67. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-bn.html +705 -0
  68. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-buffer.html +603 -0
  69. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-custom-keys-manager.html +475 -0
  70. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-decrypt-with-keys-mngr.html +396 -0
  71. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-decrypt-with-signle-key.html +326 -0
  72. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-dl.html +245 -0
  73. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-encrypt-dynamic-template.html +386 -0
  74. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-encrypt-template-file.html +364 -0
  75. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-encrypt-with-session-key.html +495 -0
  76. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-encryption-klasses.html +101 -0
  77. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-errors.html +744 -0
  78. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-examples-sign-dynamimc-template.html +406 -0
  79. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-examples-sign-template-file.html +388 -0
  80. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-examples-sign-x509.html +447 -0
  81. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-examples.html +119 -0
  82. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-gcrypt-app.html +578 -0
  83. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-gcrypt-crypto.html +1128 -0
  84. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-gcrypt-ref.html +107 -0
  85. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-gcrypt.sgml +15 -0
  86. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-gnutls-app.html +576 -0
  87. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-gnutls-crypto.html +1076 -0
  88. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-gnutls-ref.html +107 -0
  89. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-gnutls.sgml +15 -0
  90. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-index.html +1570 -0
  91. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-index.sgml +1471 -0
  92. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-io.html +226 -0
  93. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-keyinfo.html +700 -0
  94. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-keys.html +1161 -0
  95. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-keysdata.html +2067 -0
  96. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-keysmngr.html +743 -0
  97. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-list.html +643 -0
  98. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-membuf.html +143 -0
  99. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-mscrypto-app.html +747 -0
  100. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-mscrypto-certkeys.html +252 -0
  101. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-mscrypto-crypto.html +1153 -0
  102. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-mscrypto-keysstore.html +209 -0
  103. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-mscrypto-ref.html +113 -0
  104. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-mscrypto-x509.html +478 -0
  105. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-mscrypto.sgml +21 -0
  106. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-nodeset.html +542 -0
  107. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-compiling-others.html +102 -0
  108. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-compiling-unix.html +223 -0
  109. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-compiling-windows.html +138 -0
  110. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-compiling.html +117 -0
  111. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-contexts.html +229 -0
  112. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-custom-keys-store.html +250 -0
  113. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-decrypt.html +205 -0
  114. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-dynamic-encryption-templates.html +240 -0
  115. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-dynamic-signature-templates.html +250 -0
  116. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-encrypt.html +223 -0
  117. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-include-files.html +141 -0
  118. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-init-shutdown.html +194 -0
  119. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-keys-manager-sign-enc.html +307 -0
  120. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-keys-mngr-verify-decrypt.html +179 -0
  121. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-keys.html +120 -0
  122. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-keysmngr.html +140 -0
  123. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-new-crypto-functions.html +151 -0
  124. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-new-crypto-key-stores.html +83 -0
  125. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-new-crypto-keys.html +103 -0
  126. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-new-crypto-klasses.html +217 -0
  127. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-new-crypto-sharing-results.html +125 -0
  128. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-new-crypto-simple-keys-mngr.html +102 -0
  129. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-new-crypto-skeleton.html +254 -0
  130. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-new-crypto-transforms.html +170 -0
  131. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-new-crypto.html +136 -0
  132. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-overview.html +102 -0
  133. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-sign-encrypt.html +120 -0
  134. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-sign-x509.html +176 -0
  135. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-sign.html +210 -0
  136. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-simple-keys-store.html +177 -0
  137. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-structure.html +115 -0
  138. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-templates.html +114 -0
  139. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-transforms.html +154 -0
  140. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-verify-decrypt.html +120 -0
  141. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-verify-x509.html +180 -0
  142. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-verify.html +210 -0
  143. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-x509.html +114 -0
  144. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes.html +115 -0
  145. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-nss-app.html +740 -0
  146. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-nss-bignum.html +176 -0
  147. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-nss-crypto.html +978 -0
  148. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-nss-keysstore.html +209 -0
  149. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-nss-pkikeys.html +211 -0
  150. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-nss-ref.html +115 -0
  151. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-nss-x509.html +467 -0
  152. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-nss.sgml +23 -0
  153. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-openssl-app.html +800 -0
  154. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-openssl-bn.html +170 -0
  155. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-openssl-crypto.html +1329 -0
  156. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-openssl-evp.html +184 -0
  157. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-openssl-ref.html +113 -0
  158. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-openssl-x509.html +567 -0
  159. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-openssl.sgml +21 -0
  160. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-parser.html +223 -0
  161. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-ref.html +149 -0
  162. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-reference.html +106 -0
  163. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-signature-klasses.html +101 -0
  164. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-templates.html +1290 -0
  165. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-transforms.html +3059 -0
  166. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-verify-with-key.html +318 -0
  167. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-verify-with-keys-mngr.html +388 -0
  168. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-verify-with-restrictions.html +715 -0
  169. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-verify-with-x509.html +369 -0
  170. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-version.html +143 -0
  171. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-x509.html +181 -0
  172. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-xmldsig.html +853 -0
  173. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-xmlenc.html +584 -0
  174. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-xmlsec.html +300 -0
  175. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-xmltree.html +1529 -0
  176. data/vendor/xmlsec1-1.2.18/docs/api/xmlsec.sgml +307 -0
  177. data/vendor/xmlsec1-1.2.18/docs/authors.html +59 -0
  178. data/vendor/xmlsec1-1.2.18/docs/bugs.html +106 -0
  179. data/vendor/xmlsec1-1.2.18/docs/c14n.html +73 -0
  180. data/vendor/xmlsec1-1.2.18/docs/documentation.html +65 -0
  181. data/vendor/xmlsec1-1.2.18/docs/download.html +115 -0
  182. data/vendor/xmlsec1-1.2.18/docs/faq.html +449 -0
  183. data/vendor/xmlsec1-1.2.18/docs/images/bart.gif +0 -0
  184. data/vendor/xmlsec1-1.2.18/docs/images/libxml2-logo.png +0 -0
  185. data/vendor/xmlsec1-1.2.18/docs/images/libxslt-logo.png +0 -0
  186. data/vendor/xmlsec1-1.2.18/docs/images/logo.gif +0 -0
  187. data/vendor/xmlsec1-1.2.18/docs/images/openssl-logo.png +0 -0
  188. data/vendor/xmlsec1-1.2.18/docs/images/xmlsec-logo.gif +0 -0
  189. data/vendor/xmlsec1-1.2.18/docs/index.html +109 -0
  190. data/vendor/xmlsec1-1.2.18/docs/news.html +545 -0
  191. data/vendor/xmlsec1-1.2.18/docs/related.html +165 -0
  192. data/vendor/xmlsec1-1.2.18/docs/xmldsig-verifier.html +138 -0
  193. data/vendor/xmlsec1-1.2.18/docs/xmldsig.html +646 -0
  194. data/vendor/xmlsec1-1.2.18/docs/xmlenc.html +464 -0
  195. data/vendor/xmlsec1-1.2.18/docs/xmlsec-man.html +291 -0
  196. data/vendor/xmlsec1-1.2.18/docs/xmlsec.xsl +194 -0
  197. data/vendor/xmlsec1-1.2.18/examples/Makefile +40 -0
  198. data/vendor/xmlsec1-1.2.18/examples/Makefile.w32 +88 -0
  199. data/vendor/xmlsec1-1.2.18/examples/README +126 -0
  200. data/vendor/xmlsec1-1.2.18/examples/binary.dat +1 -0
  201. data/vendor/xmlsec1-1.2.18/examples/decrypt1.c +223 -0
  202. data/vendor/xmlsec1-1.2.18/examples/decrypt2.c +293 -0
  203. data/vendor/xmlsec1-1.2.18/examples/decrypt3.c +372 -0
  204. data/vendor/xmlsec1-1.2.18/examples/deskey.bin +1 -0
  205. data/vendor/xmlsec1-1.2.18/examples/encrypt1-res.xml +13 -0
  206. data/vendor/xmlsec1-1.2.18/examples/encrypt1-tmpl.xml +13 -0
  207. data/vendor/xmlsec1-1.2.18/examples/encrypt1.c +219 -0
  208. data/vendor/xmlsec1-1.2.18/examples/encrypt2-doc.xml +9 -0
  209. data/vendor/xmlsec1-1.2.18/examples/encrypt2-res.xml +14 -0
  210. data/vendor/xmlsec1-1.2.18/examples/encrypt2.c +244 -0
  211. data/vendor/xmlsec1-1.2.18/examples/encrypt3-doc.xml +9 -0
  212. data/vendor/xmlsec1-1.2.18/examples/encrypt3-res.xml +27 -0
  213. data/vendor/xmlsec1-1.2.18/examples/encrypt3.c +340 -0
  214. data/vendor/xmlsec1-1.2.18/examples/mywin32make.bat +18 -0
  215. data/vendor/xmlsec1-1.2.18/examples/rootcert.pem +25 -0
  216. data/vendor/xmlsec1-1.2.18/examples/rsacert.pem +83 -0
  217. data/vendor/xmlsec1-1.2.18/examples/rsakey.pem +27 -0
  218. data/vendor/xmlsec1-1.2.18/examples/rsapub.pem +9 -0
  219. data/vendor/xmlsec1-1.2.18/examples/sign1-res.xml +31 -0
  220. data/vendor/xmlsec1-1.2.18/examples/sign1-tmpl.xml +27 -0
  221. data/vendor/xmlsec1-1.2.18/examples/sign1.c +212 -0
  222. data/vendor/xmlsec1-1.2.18/examples/sign2-doc.xml +9 -0
  223. data/vendor/xmlsec1-1.2.18/examples/sign2-res.xml +30 -0
  224. data/vendor/xmlsec1-1.2.18/examples/sign2.c +248 -0
  225. data/vendor/xmlsec1-1.2.18/examples/sign3-doc.xml +9 -0
  226. data/vendor/xmlsec1-1.2.18/examples/sign3-res.xml +58 -0
  227. data/vendor/xmlsec1-1.2.18/examples/sign3.c +261 -0
  228. data/vendor/xmlsec1-1.2.18/examples/verify1.c +215 -0
  229. data/vendor/xmlsec1-1.2.18/examples/verify2.c +285 -0
  230. data/vendor/xmlsec1-1.2.18/examples/verify3.c +266 -0
  231. data/vendor/xmlsec1-1.2.18/examples/verify4-bad-res.xml +90 -0
  232. data/vendor/xmlsec1-1.2.18/examples/verify4-bad-tmpl.xml +54 -0
  233. data/vendor/xmlsec1-1.2.18/examples/verify4-res.xml +80 -0
  234. data/vendor/xmlsec1-1.2.18/examples/verify4-tmpl.xml +47 -0
  235. data/vendor/xmlsec1-1.2.18/examples/verify4.c +309 -0
  236. data/vendor/xmlsec1-1.2.18/examples/xkms-server.c +839 -0
  237. data/vendor/xmlsec1-1.2.18/examples/xmldsigverify.c +381 -0
  238. data/vendor/xmlsec1-1.2.18/include/Makefile.am +4 -0
  239. data/vendor/xmlsec1-1.2.18/include/Makefile.in +656 -0
  240. data/vendor/xmlsec1-1.2.18/include/xmlsec/Makefile.am +63 -0
  241. data/vendor/xmlsec1-1.2.18/include/xmlsec/Makefile.in +767 -0
  242. data/vendor/xmlsec1-1.2.18/include/xmlsec/app.h +424 -0
  243. data/vendor/xmlsec1-1.2.18/include/xmlsec/base64.h +67 -0
  244. data/vendor/xmlsec1-1.2.18/include/xmlsec/bn.h +99 -0
  245. data/vendor/xmlsec1-1.2.18/include/xmlsec/buffer.h +108 -0
  246. data/vendor/xmlsec1-1.2.18/include/xmlsec/crypto.h +75 -0
  247. data/vendor/xmlsec1-1.2.18/include/xmlsec/dl.h +56 -0
  248. data/vendor/xmlsec1-1.2.18/include/xmlsec/errors.h +504 -0
  249. data/vendor/xmlsec1-1.2.18/include/xmlsec/exports.h +111 -0
  250. data/vendor/xmlsec1-1.2.18/include/xmlsec/gcrypt/Makefile.am +13 -0
  251. data/vendor/xmlsec1-1.2.18/include/xmlsec/gcrypt/Makefile.in +564 -0
  252. data/vendor/xmlsec1-1.2.18/include/xmlsec/gcrypt/app.h +96 -0
  253. data/vendor/xmlsec1-1.2.18/include/xmlsec/gcrypt/crypto.h +460 -0
  254. data/vendor/xmlsec1-1.2.18/include/xmlsec/gcrypt/symbols.h +104 -0
  255. data/vendor/xmlsec1-1.2.18/include/xmlsec/gnutls/Makefile.am +14 -0
  256. data/vendor/xmlsec1-1.2.18/include/xmlsec/gnutls/Makefile.in +565 -0
  257. data/vendor/xmlsec1-1.2.18/include/xmlsec/gnutls/app.h +96 -0
  258. data/vendor/xmlsec1-1.2.18/include/xmlsec/gnutls/crypto.h +462 -0
  259. data/vendor/xmlsec1-1.2.18/include/xmlsec/gnutls/symbols.h +104 -0
  260. data/vendor/xmlsec1-1.2.18/include/xmlsec/gnutls/x509.h +110 -0
  261. data/vendor/xmlsec1-1.2.18/include/xmlsec/io.h +54 -0
  262. data/vendor/xmlsec1-1.2.18/include/xmlsec/keyinfo.h +285 -0
  263. data/vendor/xmlsec1-1.2.18/include/xmlsec/keys.h +278 -0
  264. data/vendor/xmlsec1-1.2.18/include/xmlsec/keysdata.h +837 -0
  265. data/vendor/xmlsec1-1.2.18/include/xmlsec/keysmngr.h +264 -0
  266. data/vendor/xmlsec1-1.2.18/include/xmlsec/list.h +194 -0
  267. data/vendor/xmlsec1-1.2.18/include/xmlsec/membuf.h +44 -0
  268. data/vendor/xmlsec1-1.2.18/include/xmlsec/mscrypto/Makefile.am +16 -0
  269. data/vendor/xmlsec1-1.2.18/include/xmlsec/mscrypto/Makefile.in +567 -0
  270. data/vendor/xmlsec1-1.2.18/include/xmlsec/mscrypto/app.h +116 -0
  271. data/vendor/xmlsec1-1.2.18/include/xmlsec/mscrypto/certkeys.h +42 -0
  272. data/vendor/xmlsec1-1.2.18/include/xmlsec/mscrypto/crypto.h +516 -0
  273. data/vendor/xmlsec1-1.2.18/include/xmlsec/mscrypto/keysstore.h +48 -0
  274. data/vendor/xmlsec1-1.2.18/include/xmlsec/mscrypto/symbols.h +114 -0
  275. data/vendor/xmlsec1-1.2.18/include/xmlsec/mscrypto/x509.h +92 -0
  276. data/vendor/xmlsec1-1.2.18/include/xmlsec/nodeset.h +139 -0
  277. data/vendor/xmlsec1-1.2.18/include/xmlsec/nss/Makefile.am +17 -0
  278. data/vendor/xmlsec1-1.2.18/include/xmlsec/nss/Makefile.in +568 -0
  279. data/vendor/xmlsec1-1.2.18/include/xmlsec/nss/app.h +118 -0
  280. data/vendor/xmlsec1-1.2.18/include/xmlsec/nss/bignum.h +37 -0
  281. data/vendor/xmlsec1-1.2.18/include/xmlsec/nss/crypto.h +469 -0
  282. data/vendor/xmlsec1-1.2.18/include/xmlsec/nss/keysstore.h +46 -0
  283. data/vendor/xmlsec1-1.2.18/include/xmlsec/nss/pkikeys.h +44 -0
  284. data/vendor/xmlsec1-1.2.18/include/xmlsec/nss/symbols.h +106 -0
  285. data/vendor/xmlsec1-1.2.18/include/xmlsec/nss/x509.h +91 -0
  286. data/vendor/xmlsec1-1.2.18/include/xmlsec/openssl/Makefile.am +16 -0
  287. data/vendor/xmlsec1-1.2.18/include/xmlsec/openssl/Makefile.in +567 -0
  288. data/vendor/xmlsec1-1.2.18/include/xmlsec/openssl/app.h +128 -0
  289. data/vendor/xmlsec1-1.2.18/include/xmlsec/openssl/bn.h +35 -0
  290. data/vendor/xmlsec1-1.2.18/include/xmlsec/openssl/crypto.h +561 -0
  291. data/vendor/xmlsec1-1.2.18/include/xmlsec/openssl/evp.h +44 -0
  292. data/vendor/xmlsec1-1.2.18/include/xmlsec/openssl/symbols.h +123 -0
  293. data/vendor/xmlsec1-1.2.18/include/xmlsec/openssl/x509.h +109 -0
  294. data/vendor/xmlsec1-1.2.18/include/xmlsec/parser.h +51 -0
  295. data/vendor/xmlsec1-1.2.18/include/xmlsec/private.h +489 -0
  296. data/vendor/xmlsec1-1.2.18/include/xmlsec/private/Makefile.am +12 -0
  297. data/vendor/xmlsec1-1.2.18/include/xmlsec/private/Makefile.in +563 -0
  298. data/vendor/xmlsec1-1.2.18/include/xmlsec/private/xkms.h +121 -0
  299. data/vendor/xmlsec1-1.2.18/include/xmlsec/private/xslt.h +34 -0
  300. data/vendor/xmlsec1-1.2.18/include/xmlsec/skeleton/Makefile.am +13 -0
  301. data/vendor/xmlsec1-1.2.18/include/xmlsec/skeleton/app.h +97 -0
  302. data/vendor/xmlsec1-1.2.18/include/xmlsec/skeleton/crypto.h +40 -0
  303. data/vendor/xmlsec1-1.2.18/include/xmlsec/skeleton/symbols.h +117 -0
  304. data/vendor/xmlsec1-1.2.18/include/xmlsec/soap.h +130 -0
  305. data/vendor/xmlsec1-1.2.18/include/xmlsec/strings.h +610 -0
  306. data/vendor/xmlsec1-1.2.18/include/xmlsec/templates.h +162 -0
  307. data/vendor/xmlsec1-1.2.18/include/xmlsec/transforms.h +994 -0
  308. data/vendor/xmlsec1-1.2.18/include/xmlsec/version.h +61 -0
  309. data/vendor/xmlsec1-1.2.18/include/xmlsec/version.h.in +61 -0
  310. data/vendor/xmlsec1-1.2.18/include/xmlsec/x509.h +80 -0
  311. data/vendor/xmlsec1-1.2.18/include/xmlsec/xkms.h +652 -0
  312. data/vendor/xmlsec1-1.2.18/include/xmlsec/xmldsig.h +281 -0
  313. data/vendor/xmlsec1-1.2.18/include/xmlsec/xmlenc.h +163 -0
  314. data/vendor/xmlsec1-1.2.18/include/xmlsec/xmlsec.h +216 -0
  315. data/vendor/xmlsec1-1.2.18/include/xmlsec/xmltree.h +275 -0
  316. data/vendor/xmlsec1-1.2.18/install-sh +520 -0
  317. data/vendor/xmlsec1-1.2.18/ltmain.sh +8413 -0
  318. data/vendor/xmlsec1-1.2.18/m4/libtool.m4 +7377 -0
  319. data/vendor/xmlsec1-1.2.18/m4/ltoptions.m4 +368 -0
  320. data/vendor/xmlsec1-1.2.18/m4/ltsugar.m4 +123 -0
  321. data/vendor/xmlsec1-1.2.18/m4/ltversion.m4 +23 -0
  322. data/vendor/xmlsec1-1.2.18/m4/lt~obsolete.m4 +92 -0
  323. data/vendor/xmlsec1-1.2.18/man/Makefile.am +52 -0
  324. data/vendor/xmlsec1-1.2.18/man/Makefile.in +582 -0
  325. data/vendor/xmlsec1-1.2.18/man/xmlsec1-config.1 +34 -0
  326. data/vendor/xmlsec1-1.2.18/man/xmlsec1.1 +269 -0
  327. data/vendor/xmlsec1-1.2.18/missing +376 -0
  328. data/vendor/xmlsec1-1.2.18/scripts/build_release.sh +33 -0
  329. data/vendor/xmlsec1-1.2.18/scripts/change-release.sh +34 -0
  330. data/vendor/xmlsec1-1.2.18/scripts/push_release.sh +30 -0
  331. data/vendor/xmlsec1-1.2.18/scripts/remove-gtkdoclink.pl +20 -0
  332. data/vendor/xmlsec1-1.2.18/scripts/test_errors.pl +38 -0
  333. data/vendor/xmlsec1-1.2.18/scripts/test_release.sh +12 -0
  334. data/vendor/xmlsec1-1.2.18/src/Makefile.am +71 -0
  335. data/vendor/xmlsec1-1.2.18/src/Makefile.in +878 -0
  336. data/vendor/xmlsec1-1.2.18/src/app.c +1498 -0
  337. data/vendor/xmlsec1-1.2.18/src/base64.c +1034 -0
  338. data/vendor/xmlsec1-1.2.18/src/bn.c +1060 -0
  339. data/vendor/xmlsec1-1.2.18/src/buffer.c +674 -0
  340. data/vendor/xmlsec1-1.2.18/src/c14n.c +801 -0
  341. data/vendor/xmlsec1-1.2.18/src/dl.c +994 -0
  342. data/vendor/xmlsec1-1.2.18/src/enveloped.c +152 -0
  343. data/vendor/xmlsec1-1.2.18/src/errors.c +242 -0
  344. data/vendor/xmlsec1-1.2.18/src/gcrypt/Makefile.am +55 -0
  345. data/vendor/xmlsec1-1.2.18/src/gcrypt/Makefile.in +764 -0
  346. data/vendor/xmlsec1-1.2.18/src/gcrypt/README +9 -0
  347. data/vendor/xmlsec1-1.2.18/src/gcrypt/app.c +663 -0
  348. data/vendor/xmlsec1-1.2.18/src/gcrypt/asn1.c +602 -0
  349. data/vendor/xmlsec1-1.2.18/src/gcrypt/asn1.h +39 -0
  350. data/vendor/xmlsec1-1.2.18/src/gcrypt/asymkeys.c +1920 -0
  351. data/vendor/xmlsec1-1.2.18/src/gcrypt/ciphers.c +855 -0
  352. data/vendor/xmlsec1-1.2.18/src/gcrypt/crypto.c +315 -0
  353. data/vendor/xmlsec1-1.2.18/src/gcrypt/digests.c +614 -0
  354. data/vendor/xmlsec1-1.2.18/src/gcrypt/globals.h +30 -0
  355. data/vendor/xmlsec1-1.2.18/src/gcrypt/hmac.c +823 -0
  356. data/vendor/xmlsec1-1.2.18/src/gcrypt/kw_aes.c +593 -0
  357. data/vendor/xmlsec1-1.2.18/src/gcrypt/kw_des.c +607 -0
  358. data/vendor/xmlsec1-1.2.18/src/gcrypt/signatures.c +1490 -0
  359. data/vendor/xmlsec1-1.2.18/src/gcrypt/symkeys.c +441 -0
  360. data/vendor/xmlsec1-1.2.18/src/globals.h +25 -0
  361. data/vendor/xmlsec1-1.2.18/src/gnutls/Makefile.am +58 -0
  362. data/vendor/xmlsec1-1.2.18/src/gnutls/Makefile.in +786 -0
  363. data/vendor/xmlsec1-1.2.18/src/gnutls/README +6 -0
  364. data/vendor/xmlsec1-1.2.18/src/gnutls/app.c +998 -0
  365. data/vendor/xmlsec1-1.2.18/src/gnutls/asymkeys.c +455 -0
  366. data/vendor/xmlsec1-1.2.18/src/gnutls/ciphers.c +82 -0
  367. data/vendor/xmlsec1-1.2.18/src/gnutls/crypto.c +351 -0
  368. data/vendor/xmlsec1-1.2.18/src/gnutls/digests.c +112 -0
  369. data/vendor/xmlsec1-1.2.18/src/gnutls/globals.h +31 -0
  370. data/vendor/xmlsec1-1.2.18/src/gnutls/hmac.c +141 -0
  371. data/vendor/xmlsec1-1.2.18/src/gnutls/kw_aes.c +72 -0
  372. data/vendor/xmlsec1-1.2.18/src/gnutls/kw_des.c +51 -0
  373. data/vendor/xmlsec1-1.2.18/src/gnutls/signatures.c +148 -0
  374. data/vendor/xmlsec1-1.2.18/src/gnutls/symkeys.c +125 -0
  375. data/vendor/xmlsec1-1.2.18/src/gnutls/x509.c +1960 -0
  376. data/vendor/xmlsec1-1.2.18/src/gnutls/x509utils.c +1687 -0
  377. data/vendor/xmlsec1-1.2.18/src/gnutls/x509utils.h +143 -0
  378. data/vendor/xmlsec1-1.2.18/src/gnutls/x509vfy.c +802 -0
  379. data/vendor/xmlsec1-1.2.18/src/io.c +496 -0
  380. data/vendor/xmlsec1-1.2.18/src/keyinfo.c +1561 -0
  381. data/vendor/xmlsec1-1.2.18/src/keys.c +1415 -0
  382. data/vendor/xmlsec1-1.2.18/src/keysdata.c +1387 -0
  383. data/vendor/xmlsec1-1.2.18/src/keysmngr.c +745 -0
  384. data/vendor/xmlsec1-1.2.18/src/kw_aes_des.c +493 -0
  385. data/vendor/xmlsec1-1.2.18/src/kw_aes_des.h +148 -0
  386. data/vendor/xmlsec1-1.2.18/src/list.c +534 -0
  387. data/vendor/xmlsec1-1.2.18/src/membuf.c +209 -0
  388. data/vendor/xmlsec1-1.2.18/src/mscrypto/Makefile.am +62 -0
  389. data/vendor/xmlsec1-1.2.18/src/mscrypto/Makefile.in +799 -0
  390. data/vendor/xmlsec1-1.2.18/src/mscrypto/README +39 -0
  391. data/vendor/xmlsec1-1.2.18/src/mscrypto/app.c +1289 -0
  392. data/vendor/xmlsec1-1.2.18/src/mscrypto/certkeys.c +2615 -0
  393. data/vendor/xmlsec1-1.2.18/src/mscrypto/ciphers.c +937 -0
  394. data/vendor/xmlsec1-1.2.18/src/mscrypto/crypto.c +889 -0
  395. data/vendor/xmlsec1-1.2.18/src/mscrypto/csp_calg.h +105 -0
  396. data/vendor/xmlsec1-1.2.18/src/mscrypto/csp_oid.h +114 -0
  397. data/vendor/xmlsec1-1.2.18/src/mscrypto/digests.c +668 -0
  398. data/vendor/xmlsec1-1.2.18/src/mscrypto/globals.h +39 -0
  399. data/vendor/xmlsec1-1.2.18/src/mscrypto/hmac.c +963 -0
  400. data/vendor/xmlsec1-1.2.18/src/mscrypto/keysstore.c +620 -0
  401. data/vendor/xmlsec1-1.2.18/src/mscrypto/kt_rsa.c +631 -0
  402. data/vendor/xmlsec1-1.2.18/src/mscrypto/kw_aes.c +662 -0
  403. data/vendor/xmlsec1-1.2.18/src/mscrypto/kw_des.c +730 -0
  404. data/vendor/xmlsec1-1.2.18/src/mscrypto/mingw-crypt32.def +36 -0
  405. data/vendor/xmlsec1-1.2.18/src/mscrypto/private.h +130 -0
  406. data/vendor/xmlsec1-1.2.18/src/mscrypto/signatures.c +960 -0
  407. data/vendor/xmlsec1-1.2.18/src/mscrypto/symkeys.c +824 -0
  408. data/vendor/xmlsec1-1.2.18/src/mscrypto/x509.c +2281 -0
  409. data/vendor/xmlsec1-1.2.18/src/mscrypto/x509vfy.c +1406 -0
  410. data/vendor/xmlsec1-1.2.18/src/mscrypto/xmlsec-mingw.h +210 -0
  411. data/vendor/xmlsec1-1.2.18/src/nodeset.c +610 -0
  412. data/vendor/xmlsec1-1.2.18/src/nss/Makefile.am +57 -0
  413. data/vendor/xmlsec1-1.2.18/src/nss/Makefile.in +798 -0
  414. data/vendor/xmlsec1-1.2.18/src/nss/README +128 -0
  415. data/vendor/xmlsec1-1.2.18/src/nss/app.c +1598 -0
  416. data/vendor/xmlsec1-1.2.18/src/nss/bignum.c +163 -0
  417. data/vendor/xmlsec1-1.2.18/src/nss/ciphers.c +838 -0
  418. data/vendor/xmlsec1-1.2.18/src/nss/crypto.c +444 -0
  419. data/vendor/xmlsec1-1.2.18/src/nss/digests.c +576 -0
  420. data/vendor/xmlsec1-1.2.18/src/nss/globals.h +24 -0
  421. data/vendor/xmlsec1-1.2.18/src/nss/hmac.c +855 -0
  422. data/vendor/xmlsec1-1.2.18/src/nss/keysstore.c +485 -0
  423. data/vendor/xmlsec1-1.2.18/src/nss/keytrans.c +753 -0
  424. data/vendor/xmlsec1-1.2.18/src/nss/kw_aes.c +681 -0
  425. data/vendor/xmlsec1-1.2.18/src/nss/kw_des.c +663 -0
  426. data/vendor/xmlsec1-1.2.18/src/nss/pkikeys.c +1554 -0
  427. data/vendor/xmlsec1-1.2.18/src/nss/signatures.c +841 -0
  428. data/vendor/xmlsec1-1.2.18/src/nss/symkeys.c +440 -0
  429. data/vendor/xmlsec1-1.2.18/src/nss/x509.c +2223 -0
  430. data/vendor/xmlsec1-1.2.18/src/nss/x509vfy.c +808 -0
  431. data/vendor/xmlsec1-1.2.18/src/openssl/Makefile.am +56 -0
  432. data/vendor/xmlsec1-1.2.18/src/openssl/Makefile.in +790 -0
  433. data/vendor/xmlsec1-1.2.18/src/openssl/README +17 -0
  434. data/vendor/xmlsec1-1.2.18/src/openssl/app.c +1628 -0
  435. data/vendor/xmlsec1-1.2.18/src/openssl/bn.c +163 -0
  436. data/vendor/xmlsec1-1.2.18/src/openssl/ciphers.c +856 -0
  437. data/vendor/xmlsec1-1.2.18/src/openssl/crypto.c +491 -0
  438. data/vendor/xmlsec1-1.2.18/src/openssl/digests.c +682 -0
  439. data/vendor/xmlsec1-1.2.18/src/openssl/evp.c +1559 -0
  440. data/vendor/xmlsec1-1.2.18/src/openssl/globals.h +24 -0
  441. data/vendor/xmlsec1-1.2.18/src/openssl/hmac.c +857 -0
  442. data/vendor/xmlsec1-1.2.18/src/openssl/kt_rsa.c +876 -0
  443. data/vendor/xmlsec1-1.2.18/src/openssl/kw_aes.c +513 -0
  444. data/vendor/xmlsec1-1.2.18/src/openssl/kw_des.c +563 -0
  445. data/vendor/xmlsec1-1.2.18/src/openssl/signatures.c +1065 -0
  446. data/vendor/xmlsec1-1.2.18/src/openssl/symkeys.c +447 -0
  447. data/vendor/xmlsec1-1.2.18/src/openssl/x509.c +2414 -0
  448. data/vendor/xmlsec1-1.2.18/src/openssl/x509vfy.c +1284 -0
  449. data/vendor/xmlsec1-1.2.18/src/parser.c +571 -0
  450. data/vendor/xmlsec1-1.2.18/src/skeleton/Makefile.am +45 -0
  451. data/vendor/xmlsec1-1.2.18/src/skeleton/README +0 -0
  452. data/vendor/xmlsec1-1.2.18/src/skeleton/app.c +499 -0
  453. data/vendor/xmlsec1-1.2.18/src/skeleton/crypto.c +260 -0
  454. data/vendor/xmlsec1-1.2.18/src/skeleton/globals.h +24 -0
  455. data/vendor/xmlsec1-1.2.18/src/soap.c +1322 -0
  456. data/vendor/xmlsec1-1.2.18/src/strings.c +597 -0
  457. data/vendor/xmlsec1-1.2.18/src/templates.c +2091 -0
  458. data/vendor/xmlsec1-1.2.18/src/transforms.c +2902 -0
  459. data/vendor/xmlsec1-1.2.18/src/x509.c +97 -0
  460. data/vendor/xmlsec1-1.2.18/src/xkms.c +4981 -0
  461. data/vendor/xmlsec1-1.2.18/src/xmldsig.c +1795 -0
  462. data/vendor/xmlsec1-1.2.18/src/xmlenc.c +1339 -0
  463. data/vendor/xmlsec1-1.2.18/src/xmlsec.c +185 -0
  464. data/vendor/xmlsec1-1.2.18/src/xmltree.c +1908 -0
  465. data/vendor/xmlsec1-1.2.18/src/xpath.c +1148 -0
  466. data/vendor/xmlsec1-1.2.18/src/xslt.c +617 -0
  467. data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/Readme.txt +52 -0
  468. data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/bad-alg-enc-element-aes128-kw-3des.xml +29 -0
  469. data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/dh-priv-key.der +0 -0
  470. data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-content-3des-kw-aes192.data +9 -0
  471. data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-content-3des-kw-aes192.tmpl +22 -0
  472. data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-content-3des-kw-aes192.xml +30 -0
  473. data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-content-aes128-kw-3des.data +9 -0
  474. data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-content-aes128-kw-3des.tmpl +22 -0
  475. data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-content-aes128-kw-3des.xml +30 -0
  476. data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-content-aes192-kw-aes256.data +9 -0
  477. data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-content-aes192-kw-aes256.tmpl +22 -0
  478. data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-content-aes192-kw-aes256.xml +30 -0
  479. data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-content-aes256-kt-rsa1_5.data +9 -0
  480. data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-content-aes256-kt-rsa1_5.tmpl +24 -0
  481. data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-content-aes256-kt-rsa1_5.xml +63 -0
  482. data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-3des-ka-dh.xml +83 -0
  483. data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-3des-kt-rsa1_5.data +9 -0
  484. data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-3des-kt-rsa1_5.tmpl +23 -0
  485. data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-3des-kt-rsa1_5.xml +61 -0
  486. data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-3des-kt-rsa_oaep_sha1.data +9 -0
  487. data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-3des-kt-rsa_oaep_sha1.tmpl +22 -0
  488. data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-3des-kt-rsa_oaep_sha1.xml +63 -0
  489. data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-3des-kt-rsa_oaep_sha256.xml +63 -0
  490. data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-3des-kt-rsa_oaep_sha512.xml +63 -0
  491. data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-3des-kw-3des.data +9 -0
  492. data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-3des-kw-3des.tmpl +22 -0
  493. data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-3des-kw-3des.xml +29 -0
  494. data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-aes128-ka-dh.xml +83 -0
  495. data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-aes128-kt-rsa1_5.data +9 -0
  496. data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-aes128-kt-rsa1_5.tmpl +20 -0
  497. data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-aes128-kt-rsa1_5.xml +61 -0
  498. data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-aes128-kt-rsa_oaep_sha1.data +9 -0
  499. data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-aes128-kt-rsa_oaep_sha1.tmpl +22 -0
  500. data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-aes128-kt-rsa_oaep_sha1.xml +63 -0
  501. data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-aes128-kw-aes128.data +9 -0
  502. data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-aes128-kw-aes128.tmpl +22 -0
  503. data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-aes128-kw-aes128.xml +29 -0
  504. data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-aes128-kw-aes256.data +9 -0
  505. data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-aes128-kw-aes256.tmpl +22 -0
  506. data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-aes128-kw-aes256.xml +29 -0
  507. data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-aes192-ka-dh.xml +83 -0
  508. data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-aes192-kt-rsa_oaep_sha1.data +9 -0
  509. data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-aes192-kt-rsa_oaep_sha1.tmpl +22 -0
  510. data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-aes192-kt-rsa_oaep_sha1.xml +63 -0
  511. data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-aes192-kw-aes192.data +9 -0
  512. data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-aes192-kw-aes192.tmpl +22 -0
  513. data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-aes192-kw-aes192.xml +29 -0
  514. data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-aes256-ka-dh.xml +83 -0
  515. data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-aes256-kw-aes256.data +9 -0
  516. data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-aes256-kw-aes256.tmpl +22 -0
  517. data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-aes256-kw-aes256.xml +29 -0
  518. data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-text-3des-kw-aes256.data +9 -0
  519. data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-text-3des-kw-aes256.tmpl +23 -0
  520. data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-text-3des-kw-aes256.xml +32 -0
  521. data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-text-aes128-kw-aes192.data +9 -0
  522. data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-text-aes128-kw-aes192.tmpl +21 -0
  523. data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-text-aes128-kw-aes192.xml +28 -0
  524. data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-text-aes192-kt-rsa1_5.data +9 -0
  525. data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-text-aes192-kt-rsa1_5.tmpl +20 -0
  526. data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-text-aes192-kt-rsa1_5.xml +62 -0
  527. data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-text-aes256-kt-rsa_oaep_sha1.data +9 -0
  528. data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-text-aes256-kt-rsa_oaep_sha1.tmpl +22 -0
  529. data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-text-aes256-kt-rsa_oaep_sha1.xml +64 -0
  530. data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/key.txt +117 -0
  531. data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/keys.xml +61 -0
  532. data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/payment.xml +9 -0
  533. data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/rsa-priv-key.der +0 -0
  534. data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/rsa-priv-key.p12 +0 -0
  535. data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/bad-request-name-not-supported.xml +2 -0
  536. data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/bad-request-name.xml +10 -0
  537. data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/compound-example-1-no-match.xml +7 -0
  538. data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/compound-example-1.xml +51 -0
  539. data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/keys/cert1.der +0 -0
  540. data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/keys/cert1.pem +26 -0
  541. data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/keys/cert2.der +0 -0
  542. data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/keys/cert2.pem +25 -0
  543. data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/keys/cert3.der +0 -0
  544. data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/keys/cert3.pem +24 -0
  545. data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/keys/create-keys.sh +73 -0
  546. data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/keys/key1-pk8.der +0 -0
  547. data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/keys/key1.der +0 -0
  548. data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/keys/key1.p12 +0 -0
  549. data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/keys/key1.pem +18 -0
  550. data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/keys/key2-pk8.der +0 -0
  551. data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/keys/key2.der +0 -0
  552. data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/keys/key2.p12 +0 -0
  553. data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/keys/key2.pem +9 -0
  554. data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/keys/key3-pk8.der +0 -0
  555. data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/keys/key3.der +0 -0
  556. data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/keys/key3.p12 +0 -0
  557. data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/keys/key3.pem +9 -0
  558. data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/keys/openssl.cnf +106 -0
  559. data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/keys/req2.pem +11 -0
  560. data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/keys/req3.pem +11 -0
  561. data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/locate-example-1-bad-service.xml +2 -0
  562. data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/locate-example-1-no-match.xml +2 -0
  563. data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/locate-example-1.xml +18 -0
  564. data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/locate-example-2-no-match.xml +2 -0
  565. data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/locate-example-2.xml +39 -0
  566. data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/locate-opaque-client-data-no-match.xml +2 -0
  567. data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/locate-opaque-client-data.xml +32 -0
  568. data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/readme.txt +117 -0
  569. data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/soap11-bad-request-name-msg-invalid.xml +9 -0
  570. data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/soap11-bad-request-name.xml +14 -0
  571. data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/soap11-locate-example-1-no-match.xml +6 -0
  572. data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/soap11-locate-example-1-unsupported.xml +13 -0
  573. data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/soap11-locate-example-1.xml +23 -0
  574. data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/soap12-bad-request-name-msg-invalid.xml +11 -0
  575. data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/soap12-bad-request-name.xml +14 -0
  576. data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/soap12-locate-example-1-no-match.xml +6 -0
  577. data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/soap12-locate-example-1-unsupported.xml +9 -0
  578. data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/soap12-locate-example-1.xml +23 -0
  579. data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/status-request-success.xml +2 -0
  580. data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/status-request.xml +7 -0
  581. data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/validate-example-1-no-match.xml +2 -0
  582. data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/validate-example-1.xml +65 -0
  583. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/README +47 -0
  584. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/dtd-hmac-91.dtd +1 -0
  585. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/dtd-hmac-91.tmpl +27 -0
  586. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/dtd-hmac-91.xml +27 -0
  587. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloped-gost.tmpl +31 -0
  588. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloped-gost.xml +42 -0
  589. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-dsa-x509chain.tmpl +18 -0
  590. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-dsa-x509chain.xml +87 -0
  591. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-expired-cert.tmpl +18 -0
  592. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-expired-cert.xml +85 -0
  593. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-md5-hmac-md5-64.tmpl +16 -0
  594. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-md5-hmac-md5-64.xml +15 -0
  595. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-md5-hmac-md5.tmpl +14 -0
  596. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-md5-hmac-md5.xml +13 -0
  597. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-md5-rsa-md5.tmpl +17 -0
  598. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-md5-rsa-md5.xml +85 -0
  599. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-ripemd160-hmac-ripemd160-64.tmpl +16 -0
  600. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-ripemd160-hmac-ripemd160-64.xml +15 -0
  601. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-ripemd160-hmac-ripemd160.tmpl +14 -0
  602. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-ripemd160-hmac-ripemd160.xml +13 -0
  603. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-ripemd160-rsa-ripemd160.tmpl +17 -0
  604. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-ripemd160-rsa-ripemd160.xml +85 -0
  605. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-rsa-x509chain.tmpl +18 -0
  606. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-rsa-x509chain.xml +85 -0
  607. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-sha1-hmac-sha1-64.tmpl +16 -0
  608. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-sha1-hmac-sha1-64.xml +15 -0
  609. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-sha1-hmac-sha1.tmpl +14 -0
  610. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-sha1-hmac-sha1.xml +13 -0
  611. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-sha1-rsa-sha1.tmpl +17 -0
  612. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-sha1-rsa-sha1.xml +85 -0
  613. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-sha224-hmac-sha224-64.tmpl +16 -0
  614. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-sha224-hmac-sha224-64.xml +15 -0
  615. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-sha224-hmac-sha224.tmpl +14 -0
  616. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-sha224-hmac-sha224.xml +13 -0
  617. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-sha224-rsa-sha224.tmpl +17 -0
  618. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-sha224-rsa-sha224.xml +85 -0
  619. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-sha256-hmac-sha256-64.tmpl +16 -0
  620. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-sha256-hmac-sha256-64.xml +15 -0
  621. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-sha256-hmac-sha256.tmpl +14 -0
  622. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-sha256-hmac-sha256.xml +13 -0
  623. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-sha256-rsa-sha256.tmpl +17 -0
  624. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-sha256-rsa-sha256.xml +85 -0
  625. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-sha384-hmac-sha384-64.tmpl +16 -0
  626. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-sha384-hmac-sha384-64.xml +15 -0
  627. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-sha384-hmac-sha384.tmpl +14 -0
  628. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-sha384-hmac-sha384.xml +13 -0
  629. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-sha384-rsa-sha384.tmpl +17 -0
  630. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-sha384-rsa-sha384.xml +103 -0
  631. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-sha512-hmac-sha512-64.tmpl +16 -0
  632. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-sha512-hmac-sha512-64.xml +16 -0
  633. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-sha512-hmac-sha512.tmpl +14 -0
  634. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-sha512-hmac-sha512.xml +15 -0
  635. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-sha512-rsa-sha512.tmpl +17 -0
  636. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-sha512-rsa-sha512.xml +104 -0
  637. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/x509data-sn-test.tmpl +27 -0
  638. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/x509data-sn-test.xml +40 -0
  639. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/x509data-test.tmpl +31 -0
  640. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/x509data-test.xml +117 -0
  641. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/xpointer-hmac.tmpl +29 -0
  642. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/xpointer-hmac.xml +28 -0
  643. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmlenc-01/enc-aes128cbc-keyname.data +1 -0
  644. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmlenc-01/enc-aes128cbc-keyname.tmpl +11 -0
  645. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmlenc-01/enc-aes128cbc-keyname.xml +12 -0
  646. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmlenc-01/enc-aes192cbc-keyname-ref.data +1 -0
  647. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmlenc-01/enc-aes192cbc-keyname-ref.xml +21 -0
  648. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmlenc-01/enc-aes192cbc-keyname.data +1 -0
  649. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmlenc-01/enc-aes192cbc-keyname.tmpl +11 -0
  650. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmlenc-01/enc-aes192cbc-keyname.xml +12 -0
  651. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmlenc-01/enc-aes256cbc-keyname.data +1 -0
  652. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmlenc-01/enc-aes256cbc-keyname.tmpl +10 -0
  653. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmlenc-01/enc-aes256cbc-keyname.xml +12 -0
  654. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmlenc-01/enc-des3cbc-aes192-keyname.data +1 -0
  655. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmlenc-01/enc-des3cbc-aes192-keyname.tmpl +16 -0
  656. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmlenc-01/enc-des3cbc-aes192-keyname.xml +18 -0
  657. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmlenc-01/enc-des3cbc-keyname-content.data +7 -0
  658. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmlenc-01/enc-des3cbc-keyname-content.tmpl +11 -0
  659. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmlenc-01/enc-des3cbc-keyname-content.xml +15 -0
  660. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmlenc-01/enc-des3cbc-keyname-element-root.data +7 -0
  661. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmlenc-01/enc-des3cbc-keyname-element-root.tmpl +11 -0
  662. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmlenc-01/enc-des3cbc-keyname-element-root.xml +15 -0
  663. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmlenc-01/enc-des3cbc-keyname-element.data +9 -0
  664. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmlenc-01/enc-des3cbc-keyname-element.tmpl +11 -0
  665. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmlenc-01/enc-des3cbc-keyname-element.xml +17 -0
  666. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmlenc-01/enc-des3cbc-keyname.data +1 -0
  667. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmlenc-01/enc-des3cbc-keyname.tmpl +8 -0
  668. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmlenc-01/enc-des3cbc-keyname.xml +8 -0
  669. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmlenc-01/enc-des3cbc-keyname2.data +1 -0
  670. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmlenc-01/enc-des3cbc-keyname2.tmpl +10 -0
  671. data/vendor/xmlsec1-1.2.18/tests/aleksey-xmlenc-01/enc-des3cbc-keyname2.xml +12 -0
  672. data/vendor/xmlsec1-1.2.18/tests/keys/README +203 -0
  673. data/vendor/xmlsec1-1.2.18/tests/keys/ca2cert.der +0 -0
  674. data/vendor/xmlsec1-1.2.18/tests/keys/ca2cert.pem +66 -0
  675. data/vendor/xmlsec1-1.2.18/tests/keys/ca2key.pem +9 -0
  676. data/vendor/xmlsec1-1.2.18/tests/keys/cacert.der +0 -0
  677. data/vendor/xmlsec1-1.2.18/tests/keys/cacert.pem +72 -0
  678. data/vendor/xmlsec1-1.2.18/tests/keys/cakey.pem +18 -0
  679. data/vendor/xmlsec1-1.2.18/tests/keys/demoCA/cacert.pem +72 -0
  680. data/vendor/xmlsec1-1.2.18/tests/keys/demoCA/careq.pem +14 -0
  681. data/vendor/xmlsec1-1.2.18/tests/keys/demoCA/index.txt +6 -0
  682. data/vendor/xmlsec1-1.2.18/tests/keys/demoCA/newcerts/01.pem +65 -0
  683. data/vendor/xmlsec1-1.2.18/tests/keys/demoCA/newcerts/02.pem +93 -0
  684. data/vendor/xmlsec1-1.2.18/tests/keys/demoCA/newcerts/03.pem +60 -0
  685. data/vendor/xmlsec1-1.2.18/tests/keys/demoCA/newcerts/04.pem +60 -0
  686. data/vendor/xmlsec1-1.2.18/tests/keys/demoCA/newcerts/05.pem +83 -0
  687. data/vendor/xmlsec1-1.2.18/tests/keys/demoCA/private/cakey.pem +18 -0
  688. data/vendor/xmlsec1-1.2.18/tests/keys/demoCA/serial +1 -0
  689. data/vendor/xmlsec1-1.2.18/tests/keys/dsacert.der +0 -0
  690. data/vendor/xmlsec1-1.2.18/tests/keys/dsacert.pem +78 -0
  691. data/vendor/xmlsec1-1.2.18/tests/keys/dsakey.der +0 -0
  692. data/vendor/xmlsec1-1.2.18/tests/keys/dsakey.p12 +0 -0
  693. data/vendor/xmlsec1-1.2.18/tests/keys/dsakey.p8-der +0 -0
  694. data/vendor/xmlsec1-1.2.18/tests/keys/dsakey.p8-pem +8 -0
  695. data/vendor/xmlsec1-1.2.18/tests/keys/dsakey.pem +14 -0
  696. data/vendor/xmlsec1-1.2.18/tests/keys/expiredcert.der +0 -0
  697. data/vendor/xmlsec1-1.2.18/tests/keys/expiredcert.pem +61 -0
  698. data/vendor/xmlsec1-1.2.18/tests/keys/expiredkey.der +0 -0
  699. data/vendor/xmlsec1-1.2.18/tests/keys/expiredkey.p12 +0 -0
  700. data/vendor/xmlsec1-1.2.18/tests/keys/expiredkey.pem +9 -0
  701. data/vendor/xmlsec1-1.2.18/tests/keys/expiredreq.pem +11 -0
  702. data/vendor/xmlsec1-1.2.18/tests/keys/gost2001ca.der +0 -0
  703. data/vendor/xmlsec1-1.2.18/tests/keys/gost2001ca.pem +13 -0
  704. data/vendor/xmlsec1-1.2.18/tests/keys/hmackey.bin +1 -0
  705. data/vendor/xmlsec1-1.2.18/tests/keys/keys.xml +83 -0
  706. data/vendor/xmlsec1-1.2.18/tests/keys/largersacert.der +0 -0
  707. data/vendor/xmlsec1-1.2.18/tests/keys/largersacert.pem +100 -0
  708. data/vendor/xmlsec1-1.2.18/tests/keys/largersakey-win.p12 +0 -0
  709. data/vendor/xmlsec1-1.2.18/tests/keys/largersakey-winxp.p12 +0 -0
  710. data/vendor/xmlsec1-1.2.18/tests/keys/largersakey.der +0 -0
  711. data/vendor/xmlsec1-1.2.18/tests/keys/largersakey.p12 +0 -0
  712. data/vendor/xmlsec1-1.2.18/tests/keys/largersakey.p8-der +0 -0
  713. data/vendor/xmlsec1-1.2.18/tests/keys/largersakey.p8-pem +53 -0
  714. data/vendor/xmlsec1-1.2.18/tests/keys/largersakey.pem +51 -0
  715. data/vendor/xmlsec1-1.2.18/tests/keys/largersareq.pem +30 -0
  716. data/vendor/xmlsec1-1.2.18/tests/keys/merlincert.pem +20 -0
  717. data/vendor/xmlsec1-1.2.18/tests/keys/openssl.cnf +316 -0
  718. data/vendor/xmlsec1-1.2.18/tests/keys/rsacert.der +0 -0
  719. data/vendor/xmlsec1-1.2.18/tests/keys/rsacert.pem +61 -0
  720. data/vendor/xmlsec1-1.2.18/tests/keys/rsakey-win.p12 +0 -0
  721. data/vendor/xmlsec1-1.2.18/tests/keys/rsakey-winxp.p12 +0 -0
  722. data/vendor/xmlsec1-1.2.18/tests/keys/rsakey.der +0 -0
  723. data/vendor/xmlsec1-1.2.18/tests/keys/rsakey.p12 +0 -0
  724. data/vendor/xmlsec1-1.2.18/tests/keys/rsakey.p8-der +0 -0
  725. data/vendor/xmlsec1-1.2.18/tests/keys/rsakey.p8-pem +11 -0
  726. data/vendor/xmlsec1-1.2.18/tests/keys/rsakey.pem +9 -0
  727. data/vendor/xmlsec1-1.2.18/tests/merlin-c14n-three/Readme.txt +20 -0
  728. data/vendor/xmlsec1-1.2.18/tests/merlin-c14n-three/c14n-0.txt +15 -0
  729. data/vendor/xmlsec1-1.2.18/tests/merlin-c14n-three/c14n-1.txt +15 -0
  730. data/vendor/xmlsec1-1.2.18/tests/merlin-c14n-three/c14n-10.txt +15 -0
  731. data/vendor/xmlsec1-1.2.18/tests/merlin-c14n-three/c14n-11.txt +15 -0
  732. data/vendor/xmlsec1-1.2.18/tests/merlin-c14n-three/c14n-12.txt +15 -0
  733. data/vendor/xmlsec1-1.2.18/tests/merlin-c14n-three/c14n-13.txt +15 -0
  734. data/vendor/xmlsec1-1.2.18/tests/merlin-c14n-three/c14n-14.txt +15 -0
  735. data/vendor/xmlsec1-1.2.18/tests/merlin-c14n-three/c14n-15.txt +0 -0
  736. data/vendor/xmlsec1-1.2.18/tests/merlin-c14n-three/c14n-16.txt +0 -0
  737. data/vendor/xmlsec1-1.2.18/tests/merlin-c14n-three/c14n-17.txt +15 -0
  738. data/vendor/xmlsec1-1.2.18/tests/merlin-c14n-three/c14n-18.txt +15 -0
  739. data/vendor/xmlsec1-1.2.18/tests/merlin-c14n-three/c14n-19.txt +15 -0
  740. data/vendor/xmlsec1-1.2.18/tests/merlin-c14n-three/c14n-2.txt +15 -0
  741. data/vendor/xmlsec1-1.2.18/tests/merlin-c14n-three/c14n-20.txt +15 -0
  742. data/vendor/xmlsec1-1.2.18/tests/merlin-c14n-three/c14n-21.txt +15 -0
  743. data/vendor/xmlsec1-1.2.18/tests/merlin-c14n-three/c14n-22.txt +15 -0
  744. data/vendor/xmlsec1-1.2.18/tests/merlin-c14n-three/c14n-23.txt +15 -0
  745. data/vendor/xmlsec1-1.2.18/tests/merlin-c14n-three/c14n-24.txt +1 -0
  746. data/vendor/xmlsec1-1.2.18/tests/merlin-c14n-three/c14n-25.txt +0 -0
  747. data/vendor/xmlsec1-1.2.18/tests/merlin-c14n-three/c14n-26.txt +15 -0
  748. data/vendor/xmlsec1-1.2.18/tests/merlin-c14n-three/c14n-27.txt +430 -0
  749. data/vendor/xmlsec1-1.2.18/tests/merlin-c14n-three/c14n-3.txt +15 -0
  750. data/vendor/xmlsec1-1.2.18/tests/merlin-c14n-three/c14n-4.txt +15 -0
  751. data/vendor/xmlsec1-1.2.18/tests/merlin-c14n-three/c14n-5.txt +15 -0
  752. data/vendor/xmlsec1-1.2.18/tests/merlin-c14n-three/c14n-6.txt +1 -0
  753. data/vendor/xmlsec1-1.2.18/tests/merlin-c14n-three/c14n-7.txt +1 -0
  754. data/vendor/xmlsec1-1.2.18/tests/merlin-c14n-three/c14n-8.txt +15 -0
  755. data/vendor/xmlsec1-1.2.18/tests/merlin-c14n-three/c14n-9.txt +15 -0
  756. data/vendor/xmlsec1-1.2.18/tests/merlin-c14n-three/signature.xml +526 -0
  757. data/vendor/xmlsec1-1.2.18/tests/merlin-exc-c14n-one/Readme.txt +3 -0
  758. data/vendor/xmlsec1-1.2.18/tests/merlin-exc-c14n-one/exc-signature.tmpl +52 -0
  759. data/vendor/xmlsec1-1.2.18/tests/merlin-exc-c14n-one/exc-signature.xml +73 -0
  760. data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/Readme.txt +63 -0
  761. data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/certs/badb.der +0 -0
  762. data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/certs/badb.pem +20 -0
  763. data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/certs/balor.der +0 -0
  764. data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/certs/balor.pem +20 -0
  765. data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/certs/bres.pem +20 -0
  766. data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/certs/ca.der +0 -0
  767. data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/certs/ca.pem +20 -0
  768. data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/certs/lugh-cert.der +0 -0
  769. data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/certs/lugh-cert.pem +20 -0
  770. data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/certs/lugh.der +0 -0
  771. data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/certs/lugh.pem +12 -0
  772. data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/certs/macha.der +0 -0
  773. data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/certs/macha.pem +20 -0
  774. data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/certs/merlin.der +0 -0
  775. data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/certs/merlin.pem +21 -0
  776. data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/certs/morigu.pem +20 -0
  777. data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/certs/nemain.der +0 -0
  778. data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/certs/nemain.pem +20 -0
  779. data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/signature-enveloped-dsa.tmpl +22 -0
  780. data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/signature-enveloped-dsa.xml +43 -0
  781. data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/signature-enveloping-b64-dsa.tmpl +21 -0
  782. data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/signature-enveloping-b64-dsa.xml +42 -0
  783. data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/signature-enveloping-dsa.tmpl +18 -0
  784. data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/signature-enveloping-dsa.xml +39 -0
  785. data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/signature-enveloping-hmac-sha1-40.tmpl +16 -0
  786. data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/signature-enveloping-hmac-sha1-40.xml +17 -0
  787. data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/signature-enveloping-hmac-sha1.tmpl +14 -0
  788. data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/signature-enveloping-hmac-sha1.xml +15 -0
  789. data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/signature-enveloping-rsa.tmpl +18 -0
  790. data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/signature-enveloping-rsa.xml +31 -0
  791. data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/signature-external-b64-dsa.tmpl +20 -0
  792. data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/signature-external-b64-dsa.xml +41 -0
  793. data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/signature-external-dsa.tmpl +17 -0
  794. data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/signature-external-dsa.xml +38 -0
  795. data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/signature-keyname.tmpl +16 -0
  796. data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/signature-keyname.xml +17 -0
  797. data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/signature-retrievalmethod-rawx509crt.tmpl +16 -0
  798. data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/signature-retrievalmethod-rawx509crt.xml +17 -0
  799. data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/signature-x509-crt-crl.tmpl +17 -0
  800. data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/signature-x509-crt-crl.xml +47 -0
  801. data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/signature-x509-crt.tmpl +17 -0
  802. data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/signature-x509-crt.xml +38 -0
  803. data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/signature-x509-is.tmpl +17 -0
  804. data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/signature-x509-is.xml +24 -0
  805. data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/signature-x509-ski.tmpl +17 -0
  806. data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/signature-x509-ski.xml +21 -0
  807. data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/signature-x509-sn.tmpl +17 -0
  808. data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/signature-x509-sn.xml +21 -0
  809. data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/signature.tmpl +245 -0
  810. data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/signature.xml +269 -0
  811. data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/Readme.txt +117 -0
  812. data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/bad-encrypt-content-aes128-cbc-kw-aes192.xml +42 -0
  813. data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/decryption-transform-except.xml +83 -0
  814. data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/decryption-transform.xml +73 -0
  815. data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/dh0.p8 +0 -0
  816. data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/dh1.p8 +0 -0
  817. data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/dsa.p8 +0 -0
  818. data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encrypt-content-aes128-cbc-kw-aes192.data +27 -0
  819. data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encrypt-content-aes128-cbc-kw-aes192.tmpl +20 -0
  820. data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encrypt-content-aes128-cbc-kw-aes192.xml +45 -0
  821. data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encrypt-content-aes192-cbc-dh-sha512.xml +113 -0
  822. data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encrypt-content-aes256-cbc-prop.data +27 -0
  823. data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encrypt-content-aes256-cbc-prop.tmpl +18 -0
  824. data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encrypt-content-aes256-cbc-prop.xml +42 -0
  825. data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encrypt-content-tripledes-cbc.data +27 -0
  826. data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encrypt-content-tripledes-cbc.tmpl +11 -0
  827. data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encrypt-content-tripledes-cbc.xml +35 -0
  828. data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encrypt-data-aes128-cbc.data +1 -0
  829. data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encrypt-data-aes128-cbc.tmpl +11 -0
  830. data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encrypt-data-aes128-cbc.xml +12 -0
  831. data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encrypt-data-aes192-cbc-kw-aes256.data +1 -0
  832. data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encrypt-data-aes192-cbc-kw-aes256.tmpl +20 -0
  833. data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encrypt-data-aes192-cbc-kw-aes256.xml +22 -0
  834. data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encrypt-data-aes256-cbc-kw-tripledes.data +1 -0
  835. data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encrypt-data-aes256-cbc-kw-tripledes.tmpl +20 -0
  836. data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encrypt-data-aes256-cbc-kw-tripledes.xml +22 -0
  837. data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encrypt-data-tripledes-cbc-rsa-oaep-mgf1p-sha256.xml +46 -0
  838. data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encrypt-data-tripledes-cbc-rsa-oaep-mgf1p.data +1 -0
  839. data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encrypt-data-tripledes-cbc-rsa-oaep-mgf1p.tmpl +21 -0
  840. data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encrypt-data-tripledes-cbc-rsa-oaep-mgf1p.xml +43 -0
  841. data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encrypt-element-aes128-cbc-rsa-1_5.data +27 -0
  842. data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encrypt-element-aes128-cbc-rsa-1_5.tmpl +19 -0
  843. data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encrypt-element-aes128-cbc-rsa-1_5.xml +63 -0
  844. data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encrypt-element-aes192-cbc-ref.data +36 -0
  845. data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encrypt-element-aes192-cbc-ref.xml +42 -0
  846. data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encrypt-element-aes256-cbc-carried-kw-aes256.xml +57 -0
  847. data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encrypt-element-aes256-cbc-kw-aes256-dh-ripemd160.xml +122 -0
  848. data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encrypt-element-aes256-cbc-retrieved-kw-aes256.data +40 -0
  849. data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encrypt-element-aes256-cbc-retrieved-kw-aes256.xml +47 -0
  850. data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encrypt-element-tripledes-cbc-kw-aes128.data +27 -0
  851. data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encrypt-element-tripledes-cbc-kw-aes128.tmpl +20 -0
  852. data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encrypt-element-tripledes-cbc-kw-aes128.xml +43 -0
  853. data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encsig-hmac-sha256-dh.xml +98 -0
  854. data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encsig-hmac-sha256-kw-tripledes-dh.xml +108 -0
  855. data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encsig-hmac-sha256-rsa-1_5.xml +46 -0
  856. data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encsig-hmac-sha256-rsa-oaep-mgf1p.xml +51 -0
  857. data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encsig-ripemd160-hmac-ripemd160-kw-tripledes.tmpl +25 -0
  858. data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encsig-ripemd160-hmac-ripemd160-kw-tripledes.xml +27 -0
  859. data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encsig-sha256-hmac-sha256-kw-aes128.xml +27 -0
  860. data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encsig-sha384-hmac-sha384-kw-aes192.xml +27 -0
  861. data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encsig-sha512-hmac-sha512-kw-aes256.xml +28 -0
  862. data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/ids.p12 +0 -0
  863. data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/keys.xml +42 -0
  864. data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/plaintext.xml +24 -0
  865. data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/rsa.p8 +0 -0
  866. data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/rsapriv.der +0 -0
  867. data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/rsapriv.p12 +0 -0
  868. data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/rsapriv.p8-der +0 -0
  869. data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/rsapriv.p8-pem +17 -0
  870. data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/rsapriv.pem +15 -0
  871. data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/rsapub.pem +6 -0
  872. data/vendor/xmlsec1-1.2.18/tests/merlin-xpath-filter2-three/Readme.txt +23 -0
  873. data/vendor/xmlsec1-1.2.18/tests/merlin-xpath-filter2-three/sign-spec-c14n-0.txt +11 -0
  874. data/vendor/xmlsec1-1.2.18/tests/merlin-xpath-filter2-three/sign-spec-c14n-1.txt +0 -0
  875. data/vendor/xmlsec1-1.2.18/tests/merlin-xpath-filter2-three/sign-spec-c14n-2.txt +25 -0
  876. data/vendor/xmlsec1-1.2.18/tests/merlin-xpath-filter2-three/sign-spec.tmpl +50 -0
  877. data/vendor/xmlsec1-1.2.18/tests/merlin-xpath-filter2-three/sign-spec.xml +122 -0
  878. data/vendor/xmlsec1-1.2.18/tests/merlin-xpath-filter2-three/sign-xfdl-c14n-0.txt +3986 -0
  879. data/vendor/xmlsec1-1.2.18/tests/merlin-xpath-filter2-three/sign-xfdl.tmpl +4153 -0
  880. data/vendor/xmlsec1-1.2.18/tests/merlin-xpath-filter2-three/sign-xfdl.xml +4225 -0
  881. data/vendor/xmlsec1-1.2.18/tests/nss.supp +220 -0
  882. data/vendor/xmlsec1-1.2.18/tests/nssdb/cert8.db +0 -0
  883. data/vendor/xmlsec1-1.2.18/tests/nssdb/key3.db +0 -0
  884. data/vendor/xmlsec1-1.2.18/tests/nssdb/secmod.db +0 -0
  885. data/vendor/xmlsec1-1.2.18/tests/openssl.supp +63 -0
  886. data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/README.txt +248 -0
  887. data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/certs/crl.der +0 -0
  888. data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/certs/dsa-ca-cert.der +0 -0
  889. data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/certs/dsa-cert.der +0 -0
  890. data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/certs/enc-dsa-key.der +0 -0
  891. data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/certs/enc-rsa-key.der +0 -0
  892. data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/certs/hmackey.bin +1 -0
  893. data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/certs/rsa-ca-cert.der +0 -0
  894. data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/certs/rsa-cert.der +0 -0
  895. data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/document-stylesheet.xml +7 -0
  896. data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/document.b64 +4 -0
  897. data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/document.xml +6 -0
  898. data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/document.xsl +45 -0
  899. data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/signature-big.xml +39 -0
  900. data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/signature-dsa-detached.xml +1 -0
  901. data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/signature-dsa-enveloped.xml +6 -0
  902. data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/signature-dsa-enveloping.xml +6 -0
  903. data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/signature-dsa-manifest.xml +1 -0
  904. data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/signature-hmac-md5-c14n-enveloping.xml +6 -0
  905. data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/signature-hmac-sha1-40-c14n-comments-detached.xml +1 -0
  906. data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/signature-hmac-sha1-40-exclusive-c14n-comments-detached.xml +1 -0
  907. data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/signature-hmac-sha1-exclusive-c14n-comments-detached.xml +1 -0
  908. data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/signature-hmac-sha1-exclusive-c14n-enveloped.xml +6 -0
  909. data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/signature-rsa-detached-b64-transform.xml +1 -0
  910. data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/signature-rsa-detached-xpath-transform.xml +1 -0
  911. data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/signature-rsa-detached-xslt-transform-bad-retrieval-method.xml +6 -0
  912. data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/signature-rsa-detached-xslt-transform-retrieval-method.xml +39 -0
  913. data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/signature-rsa-detached-xslt-transform.xml +39 -0
  914. data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/signature-rsa-detached.xml +1 -0
  915. data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/signature-rsa-enveloped-bad-digest-val.xml +6 -0
  916. data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/signature-rsa-enveloped-bad-sig.xml +6 -0
  917. data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/signature-rsa-enveloped.xml +6 -0
  918. data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/signature-rsa-enveloping.xml +6 -0
  919. data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/signature-rsa-manifest-x509-data-cert-chain.xml +1 -0
  920. data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/signature-rsa-manifest-x509-data-cert.xml +1 -0
  921. data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/signature-rsa-manifest-x509-data-issuer-serial.xml +1 -0
  922. data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/signature-rsa-manifest-x509-data-ski.xml +1 -0
  923. data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/signature-rsa-manifest-x509-data-subject-name.xml +1 -0
  924. data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/signature-rsa-manifest.xml +1 -0
  925. data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/signature-rsa-xpath-transform-enveloped.xml +6 -0
  926. data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/signature-rsa-~x509-data-crl.xml +1 -0
  927. data/vendor/xmlsec1-1.2.18/tests/testDSig.sh +875 -0
  928. data/vendor/xmlsec1-1.2.18/tests/testEnc.sh +411 -0
  929. data/vendor/xmlsec1-1.2.18/tests/testKeys.sh +69 -0
  930. data/vendor/xmlsec1-1.2.18/tests/testRes.sh +20 -0
  931. data/vendor/xmlsec1-1.2.18/tests/testXKMS.sh +129 -0
  932. data/vendor/xmlsec1-1.2.18/tests/testrun.sh +443 -0
  933. data/vendor/xmlsec1-1.2.18/tests/xmldsig2ed-tests/c14n11/xml-base-input.xml +17 -0
  934. data/vendor/xmlsec1-1.2.18/tests/xmldsig2ed-tests/defCan-1.tmpl +2 -0
  935. data/vendor/xmlsec1-1.2.18/tests/xmldsig2ed-tests/defCan-1.xml +2 -0
  936. data/vendor/xmlsec1-1.2.18/tests/xmldsig2ed-tests/defCan-2.tmpl +2 -0
  937. data/vendor/xmlsec1-1.2.18/tests/xmldsig2ed-tests/defCan-2.xml +2 -0
  938. data/vendor/xmlsec1-1.2.18/tests/xmldsig2ed-tests/defCan-3.tmpl +2 -0
  939. data/vendor/xmlsec1-1.2.18/tests/xmldsig2ed-tests/defCan-3.xml +2 -0
  940. data/vendor/xmlsec1-1.2.18/tests/xmldsig2ed-tests/xpointer-1-SUN.xml +21 -0
  941. data/vendor/xmlsec1-1.2.18/tests/xmldsig2ed-tests/xpointer-2-SUN.xml +21 -0
  942. data/vendor/xmlsec1-1.2.18/tests/xmldsig2ed-tests/xpointer-3-SUN.xml +21 -0
  943. data/vendor/xmlsec1-1.2.18/tests/xmldsig2ed-tests/xpointer-4-SUN.xml +21 -0
  944. data/vendor/xmlsec1-1.2.18/tests/xmldsig2ed-tests/xpointer-5-SUN.xml +21 -0
  945. data/vendor/xmlsec1-1.2.18/tests/xmldsig2ed-tests/xpointer-6-SUN.xml +21 -0
  946. data/vendor/xmlsec1-1.2.18/win32/Makefile.msvc +699 -0
  947. data/vendor/xmlsec1-1.2.18/win32/README.txt +168 -12
  948. data/vendor/xmlsec1-1.2.18/win32/configure.js +395 -0
  949. data/vendor/xmlsec1-1.2.18/win32/libxmlsec.def.src +25 -0
  950. data/vendor/xmlsec1-1.2.18/win32/mycfg.bat +21 -0
  951. data/vendor/xmlsec1-1.2.18/xmlsec-config.in +243 -0
  952. data/vendor/xmlsec1-1.2.18/xmlsec-gcrypt.pc.in +11 -0
  953. data/vendor/xmlsec1-1.2.18/xmlsec-gnutls.pc.in +11 -0
  954. data/vendor/xmlsec1-1.2.18/xmlsec-nss.pc.in +11 -0
  955. data/vendor/xmlsec1-1.2.18/xmlsec-openssl.pc.in +11 -0
  956. data/vendor/xmlsec1-1.2.18/xmlsec.pc.in +11 -0
  957. data/vendor/xmlsec1-1.2.18/xmlsec.spec.in +185 -0
  958. data/vendor/xmlsec1-1.2.18/xmlsec1-config +243 -0
  959. data/vendor/xmlsec1-1.2.18/xmlsec1-gcrypt.pc +11 -0
  960. data/vendor/xmlsec1-1.2.18/xmlsec1-gnutls.pc +11 -0
  961. data/vendor/xmlsec1-1.2.18/xmlsec1-nss.pc +11 -0
  962. data/vendor/xmlsec1-1.2.18/xmlsec1-openssl.pc +11 -0
  963. data/vendor/xmlsec1-1.2.18/xmlsec1.m4 +172 -0
  964. data/vendor/xmlsec1-1.2.18/xmlsec1.pc +11 -0
  965. data/vendor/xmlsec1-1.2.18/xmlsec1.spec +185 -0
  966. data/vendor/xmlsec1-1.2.18/xmlsec1Conf.sh +13 -0
  967. data/vendor/xmlsec1-1.2.18/xmlsecConf.sh.in +13 -0
  968. data/xmlsec-shim.gemspec +18 -0
  969. metadata +1014 -0
@@ -0,0 +1,440 @@
1
+ /**
2
+ *
3
+ * XMLSec library
4
+ *
5
+ * DES Algorithm support
6
+ *
7
+ * This is free software; see Copyright file in the source
8
+ * distribution for preciese wording.
9
+ *
10
+ * Copyright (C) 2002-2003 Aleksey Sanin <aleksey@aleksey.com>
11
+ */
12
+ #include "globals.h"
13
+
14
+ #include <stdlib.h>
15
+ #include <stdio.h>
16
+ #include <string.h>
17
+
18
+ #include <xmlsec/xmlsec.h>
19
+ #include <xmlsec/xmltree.h>
20
+ #include <xmlsec/keys.h>
21
+ #include <xmlsec/keyinfo.h>
22
+ #include <xmlsec/transforms.h>
23
+ #include <xmlsec/errors.h>
24
+
25
+ #include <xmlsec/nss/crypto.h>
26
+
27
+ /*****************************************************************************
28
+ *
29
+ * Symmetic (binary) keys - just a wrapper for xmlSecKeyDataBinary
30
+ *
31
+ ****************************************************************************/
32
+ static int xmlSecNssSymKeyDataInitialize (xmlSecKeyDataPtr data);
33
+ static int xmlSecNssSymKeyDataDuplicate (xmlSecKeyDataPtr dst,
34
+ xmlSecKeyDataPtr src);
35
+ static void xmlSecNssSymKeyDataFinalize (xmlSecKeyDataPtr data);
36
+ static int xmlSecNssSymKeyDataXmlRead (xmlSecKeyDataId id,
37
+ xmlSecKeyPtr key,
38
+ xmlNodePtr node,
39
+ xmlSecKeyInfoCtxPtr keyInfoCtx);
40
+ static int xmlSecNssSymKeyDataXmlWrite (xmlSecKeyDataId id,
41
+ xmlSecKeyPtr key,
42
+ xmlNodePtr node,
43
+ xmlSecKeyInfoCtxPtr keyInfoCtx);
44
+ static int xmlSecNssSymKeyDataBinRead (xmlSecKeyDataId id,
45
+ xmlSecKeyPtr key,
46
+ const xmlSecByte* buf,
47
+ xmlSecSize bufSize,
48
+ xmlSecKeyInfoCtxPtr keyInfoCtx);
49
+ static int xmlSecNssSymKeyDataBinWrite (xmlSecKeyDataId id,
50
+ xmlSecKeyPtr key,
51
+ xmlSecByte** buf,
52
+ xmlSecSize* bufSize,
53
+ xmlSecKeyInfoCtxPtr keyInfoCtx);
54
+ static int xmlSecNssSymKeyDataGenerate (xmlSecKeyDataPtr data,
55
+ xmlSecSize sizeBits,
56
+ xmlSecKeyDataType type);
57
+
58
+ static xmlSecKeyDataType xmlSecNssSymKeyDataGetType (xmlSecKeyDataPtr data);
59
+ static xmlSecSize xmlSecNssSymKeyDataGetSize (xmlSecKeyDataPtr data);
60
+ static void xmlSecNssSymKeyDataDebugDump (xmlSecKeyDataPtr data,
61
+ FILE* output);
62
+ static void xmlSecNssSymKeyDataDebugXmlDump (xmlSecKeyDataPtr data,
63
+ FILE* output);
64
+ static int xmlSecNssSymKeyDataKlassCheck (xmlSecKeyDataKlass* klass);
65
+
66
+ #define xmlSecNssSymKeyDataCheckId(data) \
67
+ (xmlSecKeyDataIsValid((data)) && \
68
+ xmlSecNssSymKeyDataKlassCheck((data)->id))
69
+
70
+ static int
71
+ xmlSecNssSymKeyDataInitialize(xmlSecKeyDataPtr data) {
72
+ xmlSecAssert2(xmlSecNssSymKeyDataCheckId(data), -1);
73
+
74
+ return(xmlSecKeyDataBinaryValueInitialize(data));
75
+ }
76
+
77
+ static int
78
+ xmlSecNssSymKeyDataDuplicate(xmlSecKeyDataPtr dst, xmlSecKeyDataPtr src) {
79
+ xmlSecAssert2(xmlSecNssSymKeyDataCheckId(dst), -1);
80
+ xmlSecAssert2(xmlSecNssSymKeyDataCheckId(src), -1);
81
+ xmlSecAssert2(dst->id == src->id, -1);
82
+
83
+ return(xmlSecKeyDataBinaryValueDuplicate(dst, src));
84
+ }
85
+
86
+ static void
87
+ xmlSecNssSymKeyDataFinalize(xmlSecKeyDataPtr data) {
88
+ xmlSecAssert(xmlSecNssSymKeyDataCheckId(data));
89
+
90
+ xmlSecKeyDataBinaryValueFinalize(data);
91
+ }
92
+
93
+ static int
94
+ xmlSecNssSymKeyDataXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
95
+ xmlNodePtr node, xmlSecKeyInfoCtxPtr keyInfoCtx) {
96
+ xmlSecAssert2(xmlSecNssSymKeyDataKlassCheck(id), -1);
97
+
98
+ return(xmlSecKeyDataBinaryValueXmlRead(id, key, node, keyInfoCtx));
99
+ }
100
+
101
+ static int
102
+ xmlSecNssSymKeyDataXmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key,
103
+ xmlNodePtr node, xmlSecKeyInfoCtxPtr keyInfoCtx) {
104
+ xmlSecAssert2(xmlSecNssSymKeyDataKlassCheck(id), -1);
105
+
106
+ return(xmlSecKeyDataBinaryValueXmlWrite(id, key, node, keyInfoCtx));
107
+ }
108
+
109
+ static int
110
+ xmlSecNssSymKeyDataBinRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
111
+ const xmlSecByte* buf, xmlSecSize bufSize,
112
+ xmlSecKeyInfoCtxPtr keyInfoCtx) {
113
+ xmlSecAssert2(xmlSecNssSymKeyDataKlassCheck(id), -1);
114
+
115
+ return(xmlSecKeyDataBinaryValueBinRead(id, key, buf, bufSize, keyInfoCtx));
116
+ }
117
+
118
+ static int
119
+ xmlSecNssSymKeyDataBinWrite(xmlSecKeyDataId id, xmlSecKeyPtr key,
120
+ xmlSecByte** buf, xmlSecSize* bufSize,
121
+ xmlSecKeyInfoCtxPtr keyInfoCtx) {
122
+ xmlSecAssert2(xmlSecNssSymKeyDataKlassCheck(id), -1);
123
+
124
+ return(xmlSecKeyDataBinaryValueBinWrite(id, key, buf, bufSize, keyInfoCtx));
125
+ }
126
+
127
+ static int
128
+ xmlSecNssSymKeyDataGenerate(xmlSecKeyDataPtr data, xmlSecSize sizeBits, xmlSecKeyDataType type ATTRIBUTE_UNUSED) {
129
+ xmlSecBufferPtr buffer;
130
+
131
+ xmlSecAssert2(xmlSecNssSymKeyDataCheckId(data), -1);
132
+ xmlSecAssert2(sizeBits > 0, -1);
133
+
134
+ buffer = xmlSecKeyDataBinaryValueGetBuffer(data);
135
+ xmlSecAssert2(buffer != NULL, -1);
136
+
137
+ return(xmlSecNssGenerateRandom(buffer, (sizeBits + 7) / 8));
138
+ }
139
+
140
+ static xmlSecKeyDataType
141
+ xmlSecNssSymKeyDataGetType(xmlSecKeyDataPtr data) {
142
+ xmlSecBufferPtr buffer;
143
+
144
+ xmlSecAssert2(xmlSecNssSymKeyDataCheckId(data), xmlSecKeyDataTypeUnknown);
145
+
146
+ buffer = xmlSecKeyDataBinaryValueGetBuffer(data);
147
+ xmlSecAssert2(buffer != NULL, xmlSecKeyDataTypeUnknown);
148
+
149
+ return((xmlSecBufferGetSize(buffer) > 0) ? xmlSecKeyDataTypeSymmetric : xmlSecKeyDataTypeUnknown);
150
+ }
151
+
152
+ static xmlSecSize
153
+ xmlSecNssSymKeyDataGetSize(xmlSecKeyDataPtr data) {
154
+ xmlSecAssert2(xmlSecNssSymKeyDataCheckId(data), 0);
155
+
156
+ return(xmlSecKeyDataBinaryValueGetSize(data));
157
+ }
158
+
159
+ static void
160
+ xmlSecNssSymKeyDataDebugDump(xmlSecKeyDataPtr data, FILE* output) {
161
+ xmlSecAssert(xmlSecNssSymKeyDataCheckId(data));
162
+
163
+ xmlSecKeyDataBinaryValueDebugDump(data, output);
164
+ }
165
+
166
+ static void
167
+ xmlSecNssSymKeyDataDebugXmlDump(xmlSecKeyDataPtr data, FILE* output) {
168
+ xmlSecAssert(xmlSecNssSymKeyDataCheckId(data));
169
+
170
+ xmlSecKeyDataBinaryValueDebugXmlDump(data, output);
171
+ }
172
+
173
+ static int
174
+ xmlSecNssSymKeyDataKlassCheck(xmlSecKeyDataKlass* klass) {
175
+ #ifndef XMLSEC_NO_DES
176
+ if(klass == xmlSecNssKeyDataDesId) {
177
+ return(1);
178
+ }
179
+ #endif /* XMLSEC_NO_DES */
180
+
181
+ #ifndef XMLSEC_NO_AES
182
+ if(klass == xmlSecNssKeyDataAesId) {
183
+ return(1);
184
+ }
185
+ #endif /* XMLSEC_NO_AES */
186
+
187
+ #ifndef XMLSEC_NO_HMAC
188
+ if(klass == xmlSecNssKeyDataHmacId) {
189
+ return(1);
190
+ }
191
+ #endif /* XMLSEC_NO_HMAC */
192
+
193
+ return(0);
194
+ }
195
+
196
+ #ifndef XMLSEC_NO_AES
197
+ /**************************************************************************
198
+ *
199
+ * <xmlsec:AESKeyValue> processing
200
+ *
201
+ *************************************************************************/
202
+ static xmlSecKeyDataKlass xmlSecNssKeyDataAesKlass = {
203
+ sizeof(xmlSecKeyDataKlass),
204
+ xmlSecKeyDataBinarySize,
205
+
206
+ /* data */
207
+ xmlSecNameAESKeyValue,
208
+ xmlSecKeyDataUsageKeyValueNode | xmlSecKeyDataUsageRetrievalMethodNodeXml,
209
+ /* xmlSecKeyDataUsage usage; */
210
+ xmlSecHrefAESKeyValue, /* const xmlChar* href; */
211
+ xmlSecNodeAESKeyValue, /* const xmlChar* dataNodeName; */
212
+ xmlSecNs, /* const xmlChar* dataNodeNs; */
213
+
214
+ /* constructors/destructor */
215
+ xmlSecNssSymKeyDataInitialize, /* xmlSecKeyDataInitializeMethod initialize; */
216
+ xmlSecNssSymKeyDataDuplicate, /* xmlSecKeyDataDuplicateMethod duplicate; */
217
+ xmlSecNssSymKeyDataFinalize, /* xmlSecKeyDataFinalizeMethod finalize; */
218
+ xmlSecNssSymKeyDataGenerate, /* xmlSecKeyDataGenerateMethod generate; */
219
+
220
+ /* get info */
221
+ xmlSecNssSymKeyDataGetType, /* xmlSecKeyDataGetTypeMethod getType; */
222
+ xmlSecNssSymKeyDataGetSize, /* xmlSecKeyDataGetSizeMethod getSize; */
223
+ NULL, /* xmlSecKeyDataGetIdentifier getIdentifier; */
224
+
225
+ /* read/write */
226
+ xmlSecNssSymKeyDataXmlRead, /* xmlSecKeyDataXmlReadMethod xmlRead; */
227
+ xmlSecNssSymKeyDataXmlWrite, /* xmlSecKeyDataXmlWriteMethod xmlWrite; */
228
+ xmlSecNssSymKeyDataBinRead, /* xmlSecKeyDataBinReadMethod binRead; */
229
+ xmlSecNssSymKeyDataBinWrite, /* xmlSecKeyDataBinWriteMethod binWrite; */
230
+
231
+ /* debug */
232
+ xmlSecNssSymKeyDataDebugDump, /* xmlSecKeyDataDebugDumpMethod debugDump; */
233
+ xmlSecNssSymKeyDataDebugXmlDump, /* xmlSecKeyDataDebugDumpMethod debugXmlDump; */
234
+
235
+ /* reserved for the future */
236
+ NULL, /* void* reserved0; */
237
+ NULL, /* void* reserved1; */
238
+ };
239
+
240
+ /**
241
+ * xmlSecNssKeyDataAesGetKlass:
242
+ *
243
+ * The AES key data klass.
244
+ *
245
+ * Returns: AES key data klass.
246
+ */
247
+ xmlSecKeyDataId
248
+ xmlSecNssKeyDataAesGetKlass(void) {
249
+ return(&xmlSecNssKeyDataAesKlass);
250
+ }
251
+
252
+ /**
253
+ * xmlSecNssKeyDataAesSet:
254
+ * @data: the pointer to AES key data.
255
+ * @buf: the pointer to key value.
256
+ * @bufSize: the key value size (in bytes).
257
+ *
258
+ * Sets the value of AES key data.
259
+ *
260
+ * Returns: 0 on success or a negative value if an error occurs.
261
+ */
262
+ int
263
+ xmlSecNssKeyDataAesSet(xmlSecKeyDataPtr data, const xmlSecByte* buf, xmlSecSize bufSize) {
264
+ xmlSecBufferPtr buffer;
265
+
266
+ xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecNssKeyDataAesId), -1);
267
+ xmlSecAssert2(buf != NULL, -1);
268
+ xmlSecAssert2(bufSize > 0, -1);
269
+
270
+ buffer = xmlSecKeyDataBinaryValueGetBuffer(data);
271
+ xmlSecAssert2(buffer != NULL, -1);
272
+
273
+ return(xmlSecBufferSetData(buffer, buf, bufSize));
274
+ }
275
+ #endif /* XMLSEC_NO_AES */
276
+
277
+ #ifndef XMLSEC_NO_DES
278
+ /**************************************************************************
279
+ *
280
+ * <xmlsec:DESKeyValue> processing
281
+ *
282
+ *************************************************************************/
283
+ static xmlSecKeyDataKlass xmlSecNssKeyDataDesKlass = {
284
+ sizeof(xmlSecKeyDataKlass),
285
+ xmlSecKeyDataBinarySize,
286
+
287
+ /* data */
288
+ xmlSecNameDESKeyValue,
289
+ xmlSecKeyDataUsageKeyValueNode | xmlSecKeyDataUsageRetrievalMethodNodeXml,
290
+ /* xmlSecKeyDataUsage usage; */
291
+ xmlSecHrefDESKeyValue, /* const xmlChar* href; */
292
+ xmlSecNodeDESKeyValue, /* const xmlChar* dataNodeName; */
293
+ xmlSecNs, /* const xmlChar* dataNodeNs; */
294
+
295
+ /* constructors/destructor */
296
+ xmlSecNssSymKeyDataInitialize, /* xmlSecKeyDataInitializeMethod initialize; */
297
+ xmlSecNssSymKeyDataDuplicate, /* xmlSecKeyDataDuplicateMethod duplicate; */
298
+ xmlSecNssSymKeyDataFinalize, /* xmlSecKeyDataFinalizeMethod finalize; */
299
+ xmlSecNssSymKeyDataGenerate, /* xmlSecKeyDataGenerateMethod generate; */
300
+
301
+ /* get info */
302
+ xmlSecNssSymKeyDataGetType, /* xmlSecKeyDataGetTypeMethod getType; */
303
+ xmlSecNssSymKeyDataGetSize, /* xmlSecKeyDataGetSizeMethod getSize; */
304
+ NULL, /* xmlSecKeyDataGetIdentifier getIdentifier; */
305
+
306
+ /* read/write */
307
+ xmlSecNssSymKeyDataXmlRead, /* xmlSecKeyDataXmlReadMethod xmlRead; */
308
+ xmlSecNssSymKeyDataXmlWrite, /* xmlSecKeyDataXmlWriteMethod xmlWrite; */
309
+ xmlSecNssSymKeyDataBinRead, /* xmlSecKeyDataBinReadMethod binRead; */
310
+ xmlSecNssSymKeyDataBinWrite, /* xmlSecKeyDataBinWriteMethod binWrite; */
311
+
312
+ /* debug */
313
+ xmlSecNssSymKeyDataDebugDump, /* xmlSecKeyDataDebugDumpMethod debugDump; */
314
+ xmlSecNssSymKeyDataDebugXmlDump, /* xmlSecKeyDataDebugDumpMethod debugXmlDump; */
315
+
316
+ /* reserved for the future */
317
+ NULL, /* void* reserved0; */
318
+ NULL, /* void* reserved1; */
319
+ };
320
+
321
+ /**
322
+ * xmlSecNssKeyDataDesGetKlass:
323
+ *
324
+ * The DES key data klass.
325
+ *
326
+ * Returns: DES key data klass.
327
+ */
328
+ xmlSecKeyDataId
329
+ xmlSecNssKeyDataDesGetKlass(void) {
330
+ return(&xmlSecNssKeyDataDesKlass);
331
+ }
332
+
333
+ /**
334
+ * xmlSecNssKeyDataDesSet:
335
+ * @data: the pointer to DES key data.
336
+ * @buf: the pointer to key value.
337
+ * @bufSize: the key value size (in bytes).
338
+ *
339
+ * Sets the value of DES key data.
340
+ *
341
+ * Returns: 0 on success or a negative value if an error occurs.
342
+ */
343
+ int
344
+ xmlSecNssKeyDataDesSet(xmlSecKeyDataPtr data, const xmlSecByte* buf, xmlSecSize bufSize) {
345
+ xmlSecBufferPtr buffer;
346
+
347
+ xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecNssKeyDataDesId), -1);
348
+ xmlSecAssert2(buf != NULL, -1);
349
+ xmlSecAssert2(bufSize > 0, -1);
350
+
351
+ buffer = xmlSecKeyDataBinaryValueGetBuffer(data);
352
+ xmlSecAssert2(buffer != NULL, -1);
353
+
354
+ return(xmlSecBufferSetData(buffer, buf, bufSize));
355
+ }
356
+
357
+ #endif /* XMLSEC_NO_DES */
358
+
359
+ #ifndef XMLSEC_NO_HMAC
360
+ /**************************************************************************
361
+ *
362
+ * <xmlsec:HMACKeyValue> processing
363
+ *
364
+ *************************************************************************/
365
+ static xmlSecKeyDataKlass xmlSecNssKeyDataHmacKlass = {
366
+ sizeof(xmlSecKeyDataKlass),
367
+ xmlSecKeyDataBinarySize,
368
+
369
+ /* data */
370
+ xmlSecNameHMACKeyValue,
371
+ xmlSecKeyDataUsageKeyValueNode | xmlSecKeyDataUsageRetrievalMethodNodeXml,
372
+ /* xmlSecKeyDataUsage usage; */
373
+ xmlSecHrefHMACKeyValue, /* const xmlChar* href; */
374
+ xmlSecNodeHMACKeyValue, /* const xmlChar* dataNodeName; */
375
+ xmlSecNs, /* const xmlChar* dataNodeNs; */
376
+
377
+ /* constructors/destructor */
378
+ xmlSecNssSymKeyDataInitialize, /* xmlSecKeyDataInitializeMethod initialize; */
379
+ xmlSecNssSymKeyDataDuplicate, /* xmlSecKeyDataDuplicateMethod duplicate; */
380
+ xmlSecNssSymKeyDataFinalize, /* xmlSecKeyDataFinalizeMethod finalize; */
381
+ xmlSecNssSymKeyDataGenerate, /* xmlSecKeyDataGenerateMethod generate; */
382
+
383
+ /* get info */
384
+ xmlSecNssSymKeyDataGetType, /* xmlSecKeyDataGetTypeMethod getType; */
385
+ xmlSecNssSymKeyDataGetSize, /* xmlSecKeyDataGetSizeMethod getSize; */
386
+ NULL, /* xmlSecKeyDataGetIdentifier getIdentifier; */
387
+
388
+ /* read/write */
389
+ xmlSecNssSymKeyDataXmlRead, /* xmlSecKeyDataXmlReadMethod xmlRead; */
390
+ xmlSecNssSymKeyDataXmlWrite, /* xmlSecKeyDataXmlWriteMethod xmlWrite; */
391
+ xmlSecNssSymKeyDataBinRead, /* xmlSecKeyDataBinReadMethod binRead; */
392
+ xmlSecNssSymKeyDataBinWrite, /* xmlSecKeyDataBinWriteMethod binWrite; */
393
+
394
+ /* debug */
395
+ xmlSecNssSymKeyDataDebugDump, /* xmlSecKeyDataDebugDumpMethod debugDump; */
396
+ xmlSecNssSymKeyDataDebugXmlDump, /* xmlSecKeyDataDebugDumpMethod debugXmlDump; */
397
+
398
+ /* reserved for the future */
399
+ NULL, /* void* reserved0; */
400
+ NULL, /* void* reserved1; */
401
+ };
402
+
403
+ /**
404
+ * xmlSecNssKeyDataHmacGetKlass:
405
+ *
406
+ * The HMAC key data klass.
407
+ *
408
+ * Returns: HMAC key data klass.
409
+ */
410
+ xmlSecKeyDataId
411
+ xmlSecNssKeyDataHmacGetKlass(void) {
412
+ return(&xmlSecNssKeyDataHmacKlass);
413
+ }
414
+
415
+ /**
416
+ * xmlSecNssKeyDataHmacSet:
417
+ * @data: the pointer to HMAC key data.
418
+ * @buf: the pointer to key value.
419
+ * @bufSize: the key value size (in bytes).
420
+ *
421
+ * Sets the value of HMAC key data.
422
+ *
423
+ * Returns: 0 on success or a negative value if an error occurs.
424
+ */
425
+ int
426
+ xmlSecNssKeyDataHmacSet(xmlSecKeyDataPtr data, const xmlSecByte* buf, xmlSecSize bufSize) {
427
+ xmlSecBufferPtr buffer;
428
+
429
+ xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecNssKeyDataHmacId), -1);
430
+ xmlSecAssert2(buf != NULL, -1);
431
+ xmlSecAssert2(bufSize > 0, -1);
432
+
433
+ buffer = xmlSecKeyDataBinaryValueGetBuffer(data);
434
+ xmlSecAssert2(buffer != NULL, -1);
435
+
436
+ return(xmlSecBufferSetData(buffer, buf, bufSize));
437
+ }
438
+
439
+ #endif /* XMLSEC_NO_HMAC */
440
+
@@ -0,0 +1,2223 @@
1
+ /**
2
+ * XMLSec library
3
+ *
4
+ * X509 support
5
+ *
6
+ *
7
+ * This is free software; see Copyright file in the source
8
+ * distribution for preciese wording.
9
+ *
10
+ * Copyright (c) 2003 America Online, Inc. All rights reserved.
11
+ */
12
+ #include "globals.h"
13
+
14
+ #ifndef XMLSEC_NO_X509
15
+
16
+ #include <stdlib.h>
17
+ #include <stdio.h>
18
+ #include <string.h>
19
+ #include <ctype.h>
20
+ #include <errno.h>
21
+ #include <time.h>
22
+
23
+ #include <prmem.h>
24
+ #include <pratom.h>
25
+ #include <keyhi.h>
26
+ #include <cert.h>
27
+ #include <certdb.h>
28
+ #include <pk11func.h>
29
+
30
+ #include <libxml/tree.h>
31
+
32
+ #include <xmlsec/xmlsec.h>
33
+ #include <xmlsec/xmltree.h>
34
+ #include <xmlsec/keys.h>
35
+ #include <xmlsec/keyinfo.h>
36
+ #include <xmlsec/keysmngr.h>
37
+ #include <xmlsec/x509.h>
38
+ #include <xmlsec/base64.h>
39
+ #include <xmlsec/errors.h>
40
+
41
+ #include <xmlsec/nss/crypto.h>
42
+ #include <xmlsec/nss/x509.h>
43
+ #include <xmlsec/nss/pkikeys.h>
44
+
45
+
46
+ /* workaround - NSS exports this but doesn't declare it */
47
+ extern CERTCertificate * __CERT_NewTempCertificate(CERTCertDBHandle *handle,
48
+ SECItem *derCert,
49
+ char *nickname,
50
+ PRBool isperm,
51
+ PRBool copyDER);
52
+
53
+ /*************************************************************************
54
+ *
55
+ * X509 utility functions
56
+ *
57
+ ************************************************************************/
58
+ static int xmlSecNssX509DataNodeRead (xmlSecKeyDataPtr data,
59
+ xmlNodePtr node,
60
+ xmlSecKeyInfoCtxPtr keyInfoCtx);
61
+ static int xmlSecNssX509CertificateNodeRead (xmlSecKeyDataPtr data,
62
+ xmlNodePtr node,
63
+ xmlSecKeyInfoCtxPtr keyInfoCtx);
64
+ static int xmlSecNssX509CertificateNodeWrite (CERTCertificate* cert,
65
+ xmlNodePtr node,
66
+ xmlSecKeyInfoCtxPtr keyInfoCtx);
67
+ static int xmlSecNssX509SubjectNameNodeRead (xmlSecKeyDataPtr data,
68
+ xmlNodePtr node,
69
+ xmlSecKeyInfoCtxPtr keyInfoCtx);
70
+ static int xmlSecNssX509SubjectNameNodeWrite (CERTCertificate* cert,
71
+ xmlNodePtr node,
72
+ xmlSecKeyInfoCtxPtr keyInfoCtx);
73
+ static int xmlSecNssX509IssuerSerialNodeRead (xmlSecKeyDataPtr data,
74
+ xmlNodePtr node,
75
+ xmlSecKeyInfoCtxPtr keyInfoCtx);
76
+ static int xmlSecNssX509IssuerSerialNodeWrite (CERTCertificate* cert,
77
+ xmlNodePtr node,
78
+ xmlSecKeyInfoCtxPtr keyInfoCtx);
79
+ static int xmlSecNssX509SKINodeRead (xmlSecKeyDataPtr data,
80
+ xmlNodePtr node,
81
+ xmlSecKeyInfoCtxPtr keyInfoCtx);
82
+ static int xmlSecNssX509SKINodeWrite (CERTCertificate* cert,
83
+ xmlNodePtr node,
84
+ xmlSecKeyInfoCtxPtr keyInfoCtx);
85
+ static int xmlSecNssX509CRLNodeRead (xmlSecKeyDataPtr data,
86
+ xmlNodePtr node,
87
+ xmlSecKeyInfoCtxPtr keyInfoCtx);
88
+ static int xmlSecNssX509CRLNodeWrite (CERTSignedCrl* crl,
89
+ xmlNodePtr node,
90
+ xmlSecKeyInfoCtxPtr keyInfoCtx);
91
+ static int xmlSecNssKeyDataX509VerifyAndExtractKey(xmlSecKeyDataPtr data,
92
+ xmlSecKeyPtr key,
93
+ xmlSecKeyInfoCtxPtr keyInfoCtx);
94
+
95
+ static CERTCertificate* xmlSecNssX509CertDerRead (const xmlSecByte* buf,
96
+ xmlSecSize size);
97
+ static CERTCertificate* xmlSecNssX509CertBase64DerRead (xmlChar* buf);
98
+ static xmlChar* xmlSecNssX509CertBase64DerWrite (CERTCertificate* cert,
99
+ int base64LineWrap);
100
+ static CERTSignedCrl* xmlSecNssX509CrlDerRead (xmlSecByte* buf,
101
+ xmlSecSize size,
102
+ xmlSecKeyInfoCtxPtr keyInfoCtx);
103
+ static CERTSignedCrl* xmlSecNssX509CrlBase64DerRead (xmlChar* buf,
104
+ xmlSecKeyInfoCtxPtr keyInfoCtx);
105
+ static xmlChar* xmlSecNssX509CrlBase64DerWrite (CERTSignedCrl* crl,
106
+ int base64LineWrap);
107
+ static xmlChar* xmlSecNssX509NameWrite (CERTName* nm);
108
+ static xmlChar* xmlSecNssASN1IntegerWrite (SECItem *num);
109
+ static xmlChar* xmlSecNssX509SKIWrite (CERTCertificate* cert);
110
+ static void xmlSecNssX509CertDebugDump (CERTCertificate* cert,
111
+ FILE* output);
112
+ static void xmlSecNssX509CertDebugXmlDump (CERTCertificate* cert,
113
+ FILE* output);
114
+ static int xmlSecNssX509CertGetTime (PRTime* t,
115
+ time_t* res);
116
+
117
+ /*************************************************************************
118
+ *
119
+ * Internal NSS X509 data CTX
120
+ *
121
+ ************************************************************************/
122
+ typedef struct _xmlSecNssX509DataCtx xmlSecNssX509DataCtx,
123
+ *xmlSecNssX509DataCtxPtr;
124
+ typedef struct _xmlSecNssX509CrlNode xmlSecNssX509CrlNode,
125
+ *xmlSecNssX509CrlNodePtr;
126
+ struct _xmlSecNssX509CrlNode {
127
+ xmlSecNssX509CrlNodePtr next;
128
+ CERTSignedCrl *crl;
129
+ };
130
+
131
+ struct _xmlSecNssX509DataCtx {
132
+ CERTCertificate* keyCert;
133
+
134
+ CERTCertList* certsList;
135
+ unsigned int numCerts;
136
+
137
+ xmlSecNssX509CrlNodePtr crlsList;
138
+ unsigned int numCrls;
139
+ };
140
+
141
+ /**************************************************************************
142
+ *
143
+ * <dsig:X509Data> processing
144
+ *
145
+ *
146
+ * The X509Data Element (http://www.w3.org/TR/xmldsig-core/#sec-X509Data)
147
+ *
148
+ * An X509Data element within KeyInfo contains one or more identifiers of keys
149
+ * or X509 certificates (or certificates' identifiers or a revocation list).
150
+ * The content of X509Data is:
151
+ *
152
+ * 1. At least one element, from the following set of element types; any of these may appear together or more than once iff (if and only if) each instance describes or is related to the same certificate:
153
+ * 2.
154
+ * * The X509IssuerSerial element, which contains an X.509 issuer
155
+ * distinguished name/serial number pair that SHOULD be compliant
156
+ * with RFC2253 [LDAP-DN],
157
+ * * The X509SubjectName element, which contains an X.509 subject
158
+ * distinguished name that SHOULD be compliant with RFC2253 [LDAP-DN],
159
+ * * The X509SKI element, which contains the base64 encoded plain (i.e.
160
+ * non-DER-encoded) value of a X509 V.3 SubjectKeyIdentifier extension.
161
+ * * The X509Certificate element, which contains a base64-encoded [X509v3]
162
+ * certificate, and
163
+ * * Elements from an external namespace which accompanies/complements any
164
+ * of the elements above.
165
+ * * The X509CRL element, which contains a base64-encoded certificate
166
+ * revocation list (CRL) [X509v3].
167
+ *
168
+ * Any X509IssuerSerial, X509SKI, and X509SubjectName elements that appear
169
+ * MUST refer to the certificate or certificates containing the validation key.
170
+ * All such elements that refer to a particular individual certificate MUST be
171
+ * grouped inside a single X509Data element and if the certificate to which
172
+ * they refer appears, it MUST also be in that X509Data element.
173
+ *
174
+ * Any X509IssuerSerial, X509SKI, and X509SubjectName elements that relate to
175
+ * the same key but different certificates MUST be grouped within a single
176
+ * KeyInfo but MAY occur in multiple X509Data elements.
177
+ *
178
+ * All certificates appearing in an X509Data element MUST relate to the
179
+ * validation key by either containing it or being part of a certification
180
+ * chain that terminates in a certificate containing the validation key.
181
+ *
182
+ * No ordering is implied by the above constraints.
183
+ *
184
+ * Note, there is no direct provision for a PKCS#7 encoded "bag" of
185
+ * certificates or CRLs. However, a set of certificates and CRLs can occur
186
+ * within an X509Data element and multiple X509Data elements can occur in a
187
+ * KeyInfo. Whenever multiple certificates occur in an X509Data element, at
188
+ * least one such certificate must contain the public key which verifies the
189
+ * signature.
190
+ *
191
+ * Schema Definition
192
+ *
193
+ * <element name="X509Data" type="ds:X509DataType"/>
194
+ * <complexType name="X509DataType">
195
+ * <sequence maxOccurs="unbounded">
196
+ * <choice>
197
+ * <element name="X509IssuerSerial" type="ds:X509IssuerSerialType"/>
198
+ * <element name="X509SKI" type="base64Binary"/>
199
+ * <element name="X509SubjectName" type="string"/>
200
+ * <element name="X509Certificate" type="base64Binary"/>
201
+ * <element name="X509CRL" type="base64Binary"/>
202
+ * <any namespace="##other" processContents="lax"/>
203
+ * </choice>
204
+ * </sequence>
205
+ * </complexType>
206
+ * <complexType name="X509IssuerSerialType">
207
+ * <sequence>
208
+ * <element name="X509IssuerName" type="string"/>
209
+ * <element name="X509SerialNumber" type="integer"/>
210
+ * </sequence>
211
+ * </complexType>
212
+ *
213
+ * DTD
214
+ *
215
+ * <!ELEMENT X509Data ((X509IssuerSerial | X509SKI | X509SubjectName |
216
+ * X509Certificate | X509CRL)+ %X509.ANY;)>
217
+ * <!ELEMENT X509IssuerSerial (X509IssuerName, X509SerialNumber) >
218
+ * <!ELEMENT X509IssuerName (#PCDATA) >
219
+ * <!ELEMENT X509SubjectName (#PCDATA) >
220
+ * <!ELEMENT X509SerialNumber (#PCDATA) >
221
+ * <!ELEMENT X509SKI (#PCDATA) >
222
+ * <!ELEMENT X509Certificate (#PCDATA) >
223
+ * <!ELEMENT X509CRL (#PCDATA) >
224
+ *
225
+ * -----------------------------------------------------------------------
226
+ *
227
+ * xmlSecNssX509DataCtx is located after xmlSecTransform
228
+ *
229
+ *************************************************************************/
230
+ #define xmlSecNssX509DataSize \
231
+ (sizeof(xmlSecKeyData) + sizeof(xmlSecNssX509DataCtx))
232
+ #define xmlSecNssX509DataGetCtx(data) \
233
+ ((xmlSecNssX509DataCtxPtr)(((xmlSecByte*)(data)) + sizeof(xmlSecKeyData)))
234
+
235
+ static int xmlSecNssKeyDataX509Initialize (xmlSecKeyDataPtr data);
236
+ static int xmlSecNssKeyDataX509Duplicate (xmlSecKeyDataPtr dst,
237
+ xmlSecKeyDataPtr src);
238
+ static void xmlSecNssKeyDataX509Finalize (xmlSecKeyDataPtr data);
239
+ static int xmlSecNssKeyDataX509XmlRead (xmlSecKeyDataId id,
240
+ xmlSecKeyPtr key,
241
+ xmlNodePtr node,
242
+ xmlSecKeyInfoCtxPtr keyInfoCtx);
243
+ static int xmlSecNssKeyDataX509XmlWrite (xmlSecKeyDataId id,
244
+ xmlSecKeyPtr key,
245
+ xmlNodePtr node,
246
+ xmlSecKeyInfoCtxPtr keyInfoCtx);
247
+ static xmlSecKeyDataType xmlSecNssKeyDataX509GetType (xmlSecKeyDataPtr data);
248
+ static const xmlChar* xmlSecNssKeyDataX509GetIdentifier (xmlSecKeyDataPtr data);
249
+
250
+ static void xmlSecNssKeyDataX509DebugDump (xmlSecKeyDataPtr data,
251
+ FILE* output);
252
+ static void xmlSecNssKeyDataX509DebugXmlDump(xmlSecKeyDataPtr data,
253
+ FILE* output);
254
+
255
+
256
+
257
+ static xmlSecKeyDataKlass xmlSecNssKeyDataX509Klass = {
258
+ sizeof(xmlSecKeyDataKlass),
259
+ xmlSecNssX509DataSize,
260
+
261
+ /* data */
262
+ xmlSecNameX509Data,
263
+ xmlSecKeyDataUsageKeyInfoNode | xmlSecKeyDataUsageRetrievalMethodNodeXml,
264
+ /* xmlSecKeyDataUsage usage; */
265
+ xmlSecHrefX509Data, /* const xmlChar* href; */
266
+ xmlSecNodeX509Data, /* const xmlChar* dataNodeName; */
267
+ xmlSecDSigNs, /* const xmlChar* dataNodeNs; */
268
+
269
+ /* constructors/destructor */
270
+ xmlSecNssKeyDataX509Initialize, /* xmlSecKeyDataInitializeMethod initialize; */
271
+ xmlSecNssKeyDataX509Duplicate, /* xmlSecKeyDataDuplicateMethod duplicate; */
272
+ xmlSecNssKeyDataX509Finalize, /* xmlSecKeyDataFinalizeMethod finalize; */
273
+ NULL, /* xmlSecKeyDataGenerateMethod generate; */
274
+
275
+ /* get info */
276
+ xmlSecNssKeyDataX509GetType, /* xmlSecKeyDataGetTypeMethod getType; */
277
+ NULL, /* xmlSecKeyDataGetSizeMethod getSize; */
278
+ xmlSecNssKeyDataX509GetIdentifier, /* xmlSecKeyDataGetIdentifier getIdentifier; */
279
+
280
+ /* read/write */
281
+ xmlSecNssKeyDataX509XmlRead, /* xmlSecKeyDataXmlReadMethod xmlRead; */
282
+ xmlSecNssKeyDataX509XmlWrite, /* xmlSecKeyDataXmlWriteMethod xmlWrite; */
283
+ NULL, /* xmlSecKeyDataBinReadMethod binRead; */
284
+ NULL, /* xmlSecKeyDataBinWriteMethod binWrite; */
285
+
286
+ /* debug */
287
+ xmlSecNssKeyDataX509DebugDump, /* xmlSecKeyDataDebugDumpMethod debugDump; */
288
+ xmlSecNssKeyDataX509DebugXmlDump, /* xmlSecKeyDataDebugDumpMethod debugXmlDump; */
289
+
290
+ /* reserved for the future */
291
+ NULL, /* void* reserved0; */
292
+ NULL, /* void* reserved1; */
293
+ };
294
+
295
+ /**
296
+ * xmlSecNssKeyDataX509GetKlass:
297
+ *
298
+ * The NSS X509 key data klass (http://www.w3.org/TR/xmldsig-core/#sec-X509Data).
299
+ *
300
+ * Returns: the X509 data klass.
301
+ */
302
+ xmlSecKeyDataId
303
+ xmlSecNssKeyDataX509GetKlass(void) {
304
+ return(&xmlSecNssKeyDataX509Klass);
305
+ }
306
+
307
+ /**
308
+ * xmlSecNssKeyDataX509GetKeyCert:
309
+ * @data: the pointer to X509 key data.
310
+ *
311
+ * Gets the certificate from which the key was extracted.
312
+ *
313
+ * Returns: the key's certificate or NULL if key data was not used for key
314
+ * extraction or an error occurs.
315
+ */
316
+ CERTCertificate*
317
+ xmlSecNssKeyDataX509GetKeyCert(xmlSecKeyDataPtr data) {
318
+ xmlSecNssX509DataCtxPtr ctx;
319
+
320
+ xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecNssKeyDataX509Id), NULL);
321
+
322
+ ctx = xmlSecNssX509DataGetCtx(data);
323
+ xmlSecAssert2(ctx != NULL, NULL);
324
+
325
+ return(ctx->keyCert);
326
+ }
327
+
328
+ /**
329
+ * xmlSecNssKeyDataX509AdoptKeyCert:
330
+ * @data: the pointer to X509 key data.
331
+ * @cert: the pointer to NSS X509 certificate.
332
+ *
333
+ * Sets the key's certificate in @data.
334
+ *
335
+ * Returns: 0 on success or a negative value if an error occurs.
336
+ */
337
+ int
338
+ xmlSecNssKeyDataX509AdoptKeyCert(xmlSecKeyDataPtr data, CERTCertificate* cert) {
339
+ xmlSecNssX509DataCtxPtr ctx;
340
+
341
+ xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecNssKeyDataX509Id), -1);
342
+ xmlSecAssert2(cert != NULL, -1);
343
+
344
+ ctx = xmlSecNssX509DataGetCtx(data);
345
+ xmlSecAssert2(ctx != NULL, -1);
346
+
347
+ if(ctx->keyCert != NULL) {
348
+ CERT_DestroyCertificate(ctx->keyCert);
349
+ }
350
+ ctx->keyCert = cert;
351
+ return(0);
352
+ }
353
+
354
+ /**
355
+ * xmlSecNssKeyDataX509AdoptCert:
356
+ * @data: the pointer to X509 key data.
357
+ * @cert: the pointer to NSS X509 certificate.
358
+ *
359
+ * Adds certificate to the X509 key data.
360
+ *
361
+ * Returns: 0 on success or a negative value if an error occurs.
362
+ */
363
+ int
364
+ xmlSecNssKeyDataX509AdoptCert(xmlSecKeyDataPtr data, CERTCertificate* cert) {
365
+ xmlSecNssX509DataCtxPtr ctx;
366
+ SECStatus ret;
367
+
368
+ xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecNssKeyDataX509Id), -1);
369
+ xmlSecAssert2(cert != NULL, -1);
370
+
371
+ ctx = xmlSecNssX509DataGetCtx(data);
372
+ xmlSecAssert2(ctx != NULL, -1);
373
+
374
+ if(ctx->certsList == NULL) {
375
+ ctx->certsList = CERT_NewCertList();
376
+ if(ctx->certsList == NULL) {
377
+ xmlSecError(XMLSEC_ERRORS_HERE,
378
+ xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
379
+ "CERT_NewCertList",
380
+ XMLSEC_ERRORS_R_CRYPTO_FAILED,
381
+ "error code=%d", PORT_GetError());
382
+ return(-1);
383
+ }
384
+ }
385
+
386
+ ret = CERT_AddCertToListTail(ctx->certsList, cert);
387
+ if(ret != SECSuccess) {
388
+ xmlSecError(XMLSEC_ERRORS_HERE,
389
+ xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
390
+ "CERT_AddCertToListTail",
391
+ XMLSEC_ERRORS_R_CRYPTO_FAILED,
392
+ "error code=%d", PORT_GetError());
393
+ return(-1);
394
+ }
395
+ ctx->numCerts++;
396
+
397
+ return(0);
398
+ }
399
+
400
+ /**
401
+ * xmlSecNssKeyDataX509GetCert:
402
+ * @data: the pointer to X509 key data.
403
+ * @pos: the desired certificate position.
404
+ *
405
+ * Gets a certificate from X509 key data.
406
+ *
407
+ * Returns: the pointer to certificate or NULL if @pos is larger than the
408
+ * number of certificates in @data or an error occurs.
409
+ */
410
+ CERTCertificate*
411
+ xmlSecNssKeyDataX509GetCert(xmlSecKeyDataPtr data, xmlSecSize pos) {
412
+ xmlSecNssX509DataCtxPtr ctx;
413
+ CERTCertListNode* head;
414
+
415
+ xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecNssKeyDataX509Id), NULL);
416
+
417
+ ctx = xmlSecNssX509DataGetCtx(data);
418
+ xmlSecAssert2(ctx != NULL, NULL);
419
+ xmlSecAssert2(ctx->certsList != NULL, NULL);
420
+ xmlSecAssert2(pos < ctx->numCerts, NULL);
421
+
422
+ head = CERT_LIST_HEAD(ctx->certsList);
423
+ while (pos > 0)
424
+ {
425
+ head = CERT_LIST_NEXT(head);
426
+ pos--;
427
+ }
428
+
429
+ return (head->cert);
430
+ }
431
+
432
+ /**
433
+ * xmlSecNssKeyDataX509GetCertsSize:
434
+ * @data: the pointer to X509 key data.
435
+ *
436
+ * Gets the number of certificates in @data.
437
+ *
438
+ * Returns: te number of certificates in @data.
439
+ */
440
+ xmlSecSize
441
+ xmlSecNssKeyDataX509GetCertsSize(xmlSecKeyDataPtr data) {
442
+ xmlSecNssX509DataCtxPtr ctx;
443
+
444
+ xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecNssKeyDataX509Id), 0);
445
+
446
+ ctx = xmlSecNssX509DataGetCtx(data);
447
+ xmlSecAssert2(ctx != NULL, 0);
448
+
449
+ return(ctx->numCerts);
450
+ }
451
+
452
+ /**
453
+ * xmlSecNssKeyDataX509AdoptCrl:
454
+ * @data: the pointer to X509 key data.
455
+ * @crl: the pointer to NSS X509 CRL.
456
+ *
457
+ * Adds CRL to the X509 key data.
458
+ *
459
+ * Returns: 0 on success or a negative value if an error occurs.
460
+ */
461
+ int
462
+ xmlSecNssKeyDataX509AdoptCrl(xmlSecKeyDataPtr data, CERTSignedCrl* crl) {
463
+ xmlSecNssX509DataCtxPtr ctx;
464
+ xmlSecNssX509CrlNodePtr crlnode;
465
+
466
+ xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecNssKeyDataX509Id), -1);
467
+ xmlSecAssert2(crl != NULL, -1);
468
+
469
+ ctx = xmlSecNssX509DataGetCtx(data);
470
+ xmlSecAssert2(ctx != NULL, -1);
471
+
472
+ crlnode = (xmlSecNssX509CrlNodePtr)PR_Malloc(sizeof(xmlSecNssX509CrlNode));
473
+
474
+ if(crlnode == NULL) {
475
+ xmlSecError(XMLSEC_ERRORS_HERE,
476
+ xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
477
+ "PR_Malloc",
478
+ XMLSEC_ERRORS_R_MALLOC_FAILED,
479
+ XMLSEC_ERRORS_NO_MESSAGE);
480
+ return(-1);
481
+ }
482
+
483
+ memset(crlnode, 0, sizeof(xmlSecNssX509CrlNode));
484
+ crlnode->next = ctx->crlsList;
485
+ crlnode->crl = crl;
486
+ ctx->crlsList = crlnode;
487
+ ctx->numCrls++;
488
+
489
+ return(0);
490
+ }
491
+
492
+ /**
493
+ * xmlSecNssKeyDataX509GetCrl:
494
+ * @data: the pointer to X509 key data.
495
+ * @pos: the desired CRL position.
496
+ *
497
+ * Gets a CRL from X509 key data.
498
+ *
499
+ * Returns: the pointer to CRL or NULL if @pos is larger than the
500
+ * number of CRLs in @data or an error occurs.
501
+ */
502
+ CERTSignedCrl *
503
+ xmlSecNssKeyDataX509GetCrl(xmlSecKeyDataPtr data, xmlSecSize pos) {
504
+ xmlSecNssX509DataCtxPtr ctx;
505
+ xmlSecNssX509CrlNodePtr head;
506
+
507
+ xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecNssKeyDataX509Id), NULL);
508
+ ctx = xmlSecNssX509DataGetCtx(data);
509
+ xmlSecAssert2(ctx != NULL, NULL);
510
+
511
+ xmlSecAssert2(ctx->crlsList != NULL, NULL);
512
+ xmlSecAssert2(pos < ctx->numCrls, NULL);
513
+
514
+ head = ctx->crlsList;
515
+ while (pos > 0)
516
+ {
517
+ head = head->next;
518
+ pos--;
519
+ }
520
+
521
+ return (head->crl);
522
+ }
523
+
524
+ /**
525
+ * xmlSecNssKeyDataX509GetCrlsSize:
526
+ * @data: the pointer to X509 key data.
527
+ *
528
+ * Gets the number of CRLs in @data.
529
+ *
530
+ * Returns: te number of CRLs in @data.
531
+ */
532
+ xmlSecSize
533
+ xmlSecNssKeyDataX509GetCrlsSize(xmlSecKeyDataPtr data) {
534
+ xmlSecNssX509DataCtxPtr ctx;
535
+
536
+ xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecNssKeyDataX509Id), 0);
537
+
538
+ ctx = xmlSecNssX509DataGetCtx(data);
539
+ xmlSecAssert2(ctx != NULL, 0);
540
+
541
+ return(ctx->numCrls);
542
+ }
543
+
544
+ static int
545
+ xmlSecNssKeyDataX509Initialize(xmlSecKeyDataPtr data) {
546
+ xmlSecNssX509DataCtxPtr ctx;
547
+
548
+ xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecNssKeyDataX509Id), -1);
549
+
550
+ ctx = xmlSecNssX509DataGetCtx(data);
551
+ xmlSecAssert2(ctx != NULL, -1);
552
+
553
+ memset(ctx, 0, sizeof(xmlSecNssX509DataCtx));
554
+ return(0);
555
+ }
556
+
557
+ static int
558
+ xmlSecNssKeyDataX509Duplicate(xmlSecKeyDataPtr dst, xmlSecKeyDataPtr src) {
559
+ CERTCertificate* certSrc;
560
+ CERTCertificate* certDst;
561
+ CERTSignedCrl* crlSrc;
562
+ CERTSignedCrl* crlDst;
563
+ xmlSecSize size, pos;
564
+ int ret;
565
+
566
+ xmlSecAssert2(xmlSecKeyDataCheckId(dst, xmlSecNssKeyDataX509Id), -1);
567
+ xmlSecAssert2(xmlSecKeyDataCheckId(src, xmlSecNssKeyDataX509Id), -1);
568
+
569
+ /* copy certsList */
570
+ size = xmlSecNssKeyDataX509GetCertsSize(src);
571
+ for(pos = 0; pos < size; ++pos) {
572
+ /* TBD: function below does linear scan, eliminate loop within
573
+ * loop
574
+ */
575
+ certSrc = xmlSecNssKeyDataX509GetCert(src, pos);
576
+ if(certSrc == NULL) {
577
+ xmlSecError(XMLSEC_ERRORS_HERE,
578
+ xmlSecErrorsSafeString(xmlSecKeyDataGetName(src)),
579
+ "xmlSecNssKeyDataX509GetCert",
580
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
581
+ "pos=%d", pos);
582
+ return(-1);
583
+ }
584
+
585
+ certDst = CERT_DupCertificate(certSrc);
586
+ if(certDst == NULL) {
587
+ xmlSecError(XMLSEC_ERRORS_HERE,
588
+ xmlSecErrorsSafeString(xmlSecKeyDataGetName(dst)),
589
+ "CERT_DupCertificate",
590
+ XMLSEC_ERRORS_R_CRYPTO_FAILED,
591
+ "error code=%d", PORT_GetError());
592
+ return(-1);
593
+ }
594
+
595
+ ret = xmlSecNssKeyDataX509AdoptCert(dst, certDst);
596
+ if(ret < 0) {
597
+ xmlSecError(XMLSEC_ERRORS_HERE,
598
+ xmlSecErrorsSafeString(xmlSecKeyDataGetName(dst)),
599
+ "xmlSecNssKeyDataX509AdoptCert",
600
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
601
+ XMLSEC_ERRORS_NO_MESSAGE);
602
+ CERT_DestroyCertificate(certDst);
603
+ return(-1);
604
+ }
605
+ }
606
+
607
+ /* copy crls */
608
+ size = xmlSecNssKeyDataX509GetCrlsSize(src);
609
+ for(pos = 0; pos < size; ++pos) {
610
+ crlSrc = xmlSecNssKeyDataX509GetCrl(src, pos);
611
+ if(crlSrc == NULL) {
612
+ xmlSecError(XMLSEC_ERRORS_HERE,
613
+ xmlSecErrorsSafeString(xmlSecKeyDataGetName(src)),
614
+ "xmlSecNssKeyDataX509GetCrl",
615
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
616
+ "pos=%d", pos);
617
+ return(-1);
618
+ }
619
+
620
+ crlDst = SEC_DupCrl(crlSrc);
621
+ if(crlDst == NULL) {
622
+ xmlSecError(XMLSEC_ERRORS_HERE,
623
+ xmlSecErrorsSafeString(xmlSecKeyDataGetName(dst)),
624
+ "SEC_DupCrl",
625
+ XMLSEC_ERRORS_R_CRYPTO_FAILED,
626
+ "error code=%d", PORT_GetError());
627
+ return(-1);
628
+ }
629
+
630
+ ret = xmlSecNssKeyDataX509AdoptCrl(dst, crlDst);
631
+ if(ret < 0) {
632
+ xmlSecError(XMLSEC_ERRORS_HERE,
633
+ xmlSecErrorsSafeString(xmlSecKeyDataGetName(dst)),
634
+ "xmlSecNssKeyDataX509AdoptCrl",
635
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
636
+ XMLSEC_ERRORS_NO_MESSAGE);
637
+ SEC_DestroyCrl(crlDst);
638
+ return(-1);
639
+ }
640
+ }
641
+
642
+ /* copy key cert if exist */
643
+ certSrc = xmlSecNssKeyDataX509GetKeyCert(src);
644
+ if(certSrc != NULL) {
645
+ certDst = CERT_DupCertificate(certSrc);
646
+ if(certDst == NULL) {
647
+ xmlSecError(XMLSEC_ERRORS_HERE,
648
+ xmlSecErrorsSafeString(xmlSecKeyDataGetName(dst)),
649
+ "CERT_DupCertificate",
650
+ XMLSEC_ERRORS_R_CRYPTO_FAILED,
651
+ "error code=%d", PORT_GetError());
652
+ return(-1);
653
+ }
654
+ ret = xmlSecNssKeyDataX509AdoptKeyCert(dst, certDst);
655
+ if(ret < 0) {
656
+ xmlSecError(XMLSEC_ERRORS_HERE,
657
+ xmlSecErrorsSafeString(xmlSecKeyDataGetName(dst)),
658
+ "xmlSecNssKeyDataX509AdoptKeyCert",
659
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
660
+ XMLSEC_ERRORS_NO_MESSAGE);
661
+ CERT_DestroyCertificate(certDst);
662
+ return(-1);
663
+ }
664
+ }
665
+ return(0);
666
+ }
667
+
668
+ static void
669
+ xmlSecNssKeyDataX509Finalize(xmlSecKeyDataPtr data) {
670
+ xmlSecNssX509DataCtxPtr ctx;
671
+
672
+ xmlSecAssert(xmlSecKeyDataCheckId(data, xmlSecNssKeyDataX509Id));
673
+
674
+ ctx = xmlSecNssX509DataGetCtx(data);
675
+ xmlSecAssert(ctx != NULL);
676
+
677
+ if(ctx->certsList != NULL) {
678
+ CERT_DestroyCertList(ctx->certsList);
679
+ }
680
+
681
+ if(ctx->crlsList != NULL) {
682
+ xmlSecNssX509CrlNodePtr head;
683
+ xmlSecNssX509CrlNodePtr tmp;
684
+
685
+ head = ctx->crlsList;
686
+ while (head)
687
+ {
688
+ tmp = head->next;
689
+ SEC_DestroyCrl(head->crl);
690
+ PR_Free(head);
691
+ head = tmp;
692
+ }
693
+ }
694
+
695
+ if(ctx->keyCert != NULL) {
696
+ CERT_DestroyCertificate(ctx->keyCert);
697
+ }
698
+
699
+ memset(ctx, 0, sizeof(xmlSecNssX509DataCtx));
700
+ }
701
+
702
+ static int
703
+ xmlSecNssKeyDataX509XmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
704
+ xmlNodePtr node, xmlSecKeyInfoCtxPtr keyInfoCtx) {
705
+ xmlSecKeyDataPtr data;
706
+ int ret;
707
+
708
+ xmlSecAssert2(id == xmlSecNssKeyDataX509Id, -1);
709
+ xmlSecAssert2(key != NULL, -1);
710
+ xmlSecAssert2(node != NULL, -1);
711
+ xmlSecAssert2(keyInfoCtx != NULL, -1);
712
+
713
+ data = xmlSecKeyEnsureData(key, id);
714
+ if(data == NULL) {
715
+ xmlSecError(XMLSEC_ERRORS_HERE,
716
+ xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
717
+ "xmlSecKeyEnsureData",
718
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
719
+ XMLSEC_ERRORS_NO_MESSAGE);
720
+ return(-1);
721
+ }
722
+
723
+ ret = xmlSecNssX509DataNodeRead(data, node, keyInfoCtx);
724
+ if(ret < 0) {
725
+ xmlSecError(XMLSEC_ERRORS_HERE,
726
+ xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
727
+ "xmlSecNssX509DataNodeRead",
728
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
729
+ XMLSEC_ERRORS_NO_MESSAGE);
730
+ return(-1);
731
+ }
732
+
733
+ if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_X509DATA_DONT_VERIFY_CERTS) == 0) {
734
+ ret = xmlSecNssKeyDataX509VerifyAndExtractKey(data, key, keyInfoCtx);
735
+ if(ret < 0) {
736
+ xmlSecError(XMLSEC_ERRORS_HERE,
737
+ xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
738
+ "xmlSecNssKeyDataX509VerifyAndExtractKey",
739
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
740
+ XMLSEC_ERRORS_NO_MESSAGE);
741
+ return(-1);
742
+ }
743
+ }
744
+ return(0);
745
+ }
746
+
747
+ static int
748
+ xmlSecNssKeyDataX509XmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key,
749
+ xmlNodePtr node, xmlSecKeyInfoCtxPtr keyInfoCtx) {
750
+ xmlSecKeyDataPtr data;
751
+ CERTCertificate* cert;
752
+ CERTSignedCrl* crl;
753
+ xmlSecSize size, pos;
754
+ int content = 0;
755
+ int ret;
756
+
757
+ xmlSecAssert2(id == xmlSecNssKeyDataX509Id, -1);
758
+ xmlSecAssert2(key != NULL, -1);
759
+ xmlSecAssert2(node != NULL, -1);
760
+ xmlSecAssert2(keyInfoCtx != NULL, -1);
761
+
762
+ content = xmlSecX509DataGetNodeContent (node, 1, keyInfoCtx);
763
+ if (content < 0) {
764
+ xmlSecError(XMLSEC_ERRORS_HERE,
765
+ xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
766
+ "xmlSecX509DataGetNodeContent",
767
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
768
+ "content=%d", content);
769
+ return(-1);
770
+ } else if(content == 0) {
771
+ /* by default we are writing certificates and crls */
772
+ content = XMLSEC_X509DATA_DEFAULT;
773
+ }
774
+
775
+ /* get x509 data */
776
+ data = xmlSecKeyGetData(key, id);
777
+ if(data == NULL) {
778
+ /* no x509 data in the key */
779
+ return(0);
780
+ }
781
+
782
+ /* write certs */
783
+ size = xmlSecNssKeyDataX509GetCertsSize(data);
784
+ for(pos = 0; pos < size; ++pos) {
785
+ cert = xmlSecNssKeyDataX509GetCert(data, pos);
786
+ if(cert == NULL) {
787
+ xmlSecError(XMLSEC_ERRORS_HERE,
788
+ xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
789
+ "xmlSecNssKeyDataX509GetCert",
790
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
791
+ "pos=%d", pos);
792
+ return(-1);
793
+ }
794
+
795
+ if((content & XMLSEC_X509DATA_CERTIFICATE_NODE) != 0) {
796
+ ret = xmlSecNssX509CertificateNodeWrite(cert, node, keyInfoCtx);
797
+ if(ret < 0) {
798
+ xmlSecError(XMLSEC_ERRORS_HERE,
799
+ xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
800
+ "xmlSecNssX509CertificateNodeWrite",
801
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
802
+ "pos=%d", pos);
803
+ return(-1);
804
+ }
805
+ }
806
+
807
+ if((content & XMLSEC_X509DATA_SUBJECTNAME_NODE) != 0) {
808
+ ret = xmlSecNssX509SubjectNameNodeWrite(cert, node, keyInfoCtx);
809
+ if(ret < 0) {
810
+ xmlSecError(XMLSEC_ERRORS_HERE,
811
+ xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
812
+ "xmlSecNssX509SubjectNameNodeWrite",
813
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
814
+ "pos=%d", pos);
815
+ return(-1);
816
+ }
817
+ }
818
+
819
+ if((content & XMLSEC_X509DATA_ISSUERSERIAL_NODE) != 0) {
820
+ ret = xmlSecNssX509IssuerSerialNodeWrite(cert, node, keyInfoCtx);
821
+ if(ret < 0) {
822
+ xmlSecError(XMLSEC_ERRORS_HERE,
823
+ xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
824
+ "xmlSecNssX509IssuerSerialNodeWrite",
825
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
826
+ "pos=%d", pos);
827
+ return(-1);
828
+ }
829
+ }
830
+
831
+ if((content & XMLSEC_X509DATA_SKI_NODE) != 0) {
832
+ ret = xmlSecNssX509SKINodeWrite(cert, node, keyInfoCtx);
833
+ if(ret < 0) {
834
+ xmlSecError(XMLSEC_ERRORS_HERE,
835
+ xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
836
+ "xmlSecNssX509SKINodeWrite",
837
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
838
+ "pos=%d", pos);
839
+ return(-1);
840
+ }
841
+ }
842
+ }
843
+
844
+ /* write crls if needed */
845
+ if((content & XMLSEC_X509DATA_CRL_NODE) != 0) {
846
+ size = xmlSecNssKeyDataX509GetCrlsSize(data);
847
+ for(pos = 0; pos < size; ++pos) {
848
+ crl = xmlSecNssKeyDataX509GetCrl(data, pos);
849
+ if(crl == NULL) {
850
+ xmlSecError(XMLSEC_ERRORS_HERE,
851
+ xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
852
+ "xmlSecNssKeyDataX509GetCrl",
853
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
854
+ "pos=%d", pos);
855
+ return(-1);
856
+ }
857
+
858
+ ret = xmlSecNssX509CRLNodeWrite(crl, node, keyInfoCtx);
859
+ if(ret < 0) {
860
+ xmlSecError(XMLSEC_ERRORS_HERE,
861
+ xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
862
+ "xmlSecNssX509CRLNodeWrite",
863
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
864
+ "pos=%d", pos);
865
+ return(-1);
866
+ }
867
+ }
868
+ }
869
+
870
+ return(0);
871
+ }
872
+
873
+ static xmlSecKeyDataType
874
+ xmlSecNssKeyDataX509GetType(xmlSecKeyDataPtr data) {
875
+ xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecNssKeyDataX509Id), xmlSecKeyDataTypeUnknown);
876
+
877
+ /* TODO: return verified/not verified status */
878
+ return(xmlSecKeyDataTypeUnknown);
879
+ }
880
+
881
+ static const xmlChar*
882
+ xmlSecNssKeyDataX509GetIdentifier(xmlSecKeyDataPtr data) {
883
+ xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecNssKeyDataX509Id), NULL);
884
+
885
+ /* TODO */
886
+ return(NULL);
887
+ }
888
+
889
+ static void
890
+ xmlSecNssKeyDataX509DebugDump(xmlSecKeyDataPtr data, FILE* output) {
891
+ CERTCertificate* cert;
892
+ xmlSecSize size, pos;
893
+
894
+ xmlSecAssert(xmlSecKeyDataCheckId(data, xmlSecNssKeyDataX509Id));
895
+ xmlSecAssert(output != NULL);
896
+
897
+ fprintf(output, "=== X509 Data:\n");
898
+ cert = xmlSecNssKeyDataX509GetKeyCert(data);
899
+ if(cert != NULL) {
900
+ fprintf(output, "==== Key Certificate:\n");
901
+ xmlSecNssX509CertDebugDump(cert, output);
902
+ }
903
+
904
+ size = xmlSecNssKeyDataX509GetCertsSize(data);
905
+ for(pos = 0; pos < size; ++pos) {
906
+ cert = xmlSecNssKeyDataX509GetCert(data, pos);
907
+ if(cert == NULL) {
908
+ xmlSecError(XMLSEC_ERRORS_HERE,
909
+ xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
910
+ "xmlSecNssKeyDataX509GetCert",
911
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
912
+ "pos=%d", pos);
913
+ return;
914
+ }
915
+ fprintf(output, "==== Certificate:\n");
916
+ xmlSecNssX509CertDebugDump(cert, output);
917
+ }
918
+
919
+ /* we don't print out crls */
920
+ }
921
+
922
+ static void
923
+ xmlSecNssKeyDataX509DebugXmlDump(xmlSecKeyDataPtr data, FILE* output) {
924
+ CERTCertificate* cert;
925
+ xmlSecSize size, pos;
926
+
927
+ xmlSecAssert(xmlSecKeyDataCheckId(data, xmlSecNssKeyDataX509Id));
928
+ xmlSecAssert(output != NULL);
929
+
930
+ fprintf(output, "<X509Data>\n");
931
+ cert = xmlSecNssKeyDataX509GetKeyCert(data);
932
+ if(cert != NULL) {
933
+ fprintf(output, "<KeyCertificate>\n");
934
+ xmlSecNssX509CertDebugXmlDump(cert, output);
935
+ fprintf(output, "</KeyCertificate>\n");
936
+ }
937
+
938
+ size = xmlSecNssKeyDataX509GetCertsSize(data);
939
+ for(pos = 0; pos < size; ++pos) {
940
+ cert = xmlSecNssKeyDataX509GetCert(data, pos);
941
+ if(cert == NULL) {
942
+ xmlSecError(XMLSEC_ERRORS_HERE,
943
+ xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
944
+ "xmlSecNssKeyDataX509GetCert",
945
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
946
+ "pos=%d", pos);
947
+ return;
948
+ }
949
+ fprintf(output, "<Certificate>\n");
950
+ xmlSecNssX509CertDebugXmlDump(cert, output);
951
+ fprintf(output, "</Certificate>\n");
952
+ }
953
+
954
+ /* we don't print out crls */
955
+ fprintf(output, "</X509Data>\n");
956
+ }
957
+
958
+ static int
959
+ xmlSecNssX509DataNodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xmlSecKeyInfoCtxPtr keyInfoCtx) {
960
+ xmlNodePtr cur;
961
+ int ret;
962
+
963
+ xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecNssKeyDataX509Id), -1);
964
+ xmlSecAssert2(node != NULL, -1);
965
+ xmlSecAssert2(keyInfoCtx != NULL, -1);
966
+
967
+ for(cur = xmlSecGetNextElementNode(node->children);
968
+ cur != NULL;
969
+ cur = xmlSecGetNextElementNode(cur->next)) {
970
+
971
+ ret = 0;
972
+ if(xmlSecCheckNodeName(cur, xmlSecNodeX509Certificate, xmlSecDSigNs)) {
973
+ ret = xmlSecNssX509CertificateNodeRead(data, cur, keyInfoCtx);
974
+ } else if(xmlSecCheckNodeName(cur, xmlSecNodeX509SubjectName, xmlSecDSigNs)) {
975
+ ret = xmlSecNssX509SubjectNameNodeRead(data, cur, keyInfoCtx);
976
+ } else if(xmlSecCheckNodeName(cur, xmlSecNodeX509IssuerSerial, xmlSecDSigNs)) {
977
+ ret = xmlSecNssX509IssuerSerialNodeRead(data, cur, keyInfoCtx);
978
+ } else if(xmlSecCheckNodeName(cur, xmlSecNodeX509SKI, xmlSecDSigNs)) {
979
+ ret = xmlSecNssX509SKINodeRead(data, cur, keyInfoCtx);
980
+ } else if(xmlSecCheckNodeName(cur, xmlSecNodeX509CRL, xmlSecDSigNs)) {
981
+ ret = xmlSecNssX509CRLNodeRead(data, cur, keyInfoCtx);
982
+ } else if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_UNKNOWN_CHILD) != 0) {
983
+ /* laxi schema validation: ignore unknown nodes */
984
+ xmlSecError(XMLSEC_ERRORS_HERE,
985
+ xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
986
+ xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
987
+ XMLSEC_ERRORS_R_UNEXPECTED_NODE,
988
+ XMLSEC_ERRORS_NO_MESSAGE);
989
+ return(-1);
990
+ }
991
+ if(ret < 0) {
992
+ xmlSecError(XMLSEC_ERRORS_HERE,
993
+ xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
994
+ xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
995
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
996
+ "read node failed");
997
+ return(-1);
998
+ }
999
+ }
1000
+ return(0);
1001
+ }
1002
+
1003
+ static int
1004
+ xmlSecNssX509CertificateNodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xmlSecKeyInfoCtxPtr keyInfoCtx) {
1005
+ xmlChar *content;
1006
+ CERTCertificate* cert;
1007
+ int ret;
1008
+
1009
+ xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecNssKeyDataX509Id), -1);
1010
+ xmlSecAssert2(node != NULL, -1);
1011
+ xmlSecAssert2(keyInfoCtx != NULL, -1);
1012
+
1013
+ content = xmlNodeGetContent(node);
1014
+ if((content == NULL) || (xmlSecIsEmptyString(content) == 1)) {
1015
+ if(content != NULL) {
1016
+ xmlFree(content);
1017
+ }
1018
+ if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_STOP_ON_EMPTY_NODE) != 0) {
1019
+ xmlSecError(XMLSEC_ERRORS_HERE,
1020
+ xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
1021
+ xmlSecErrorsSafeString(xmlSecNodeGetName(node)),
1022
+ XMLSEC_ERRORS_R_INVALID_NODE_CONTENT,
1023
+ XMLSEC_ERRORS_NO_MESSAGE);
1024
+ return(-1);
1025
+ }
1026
+ return(0);
1027
+ }
1028
+
1029
+ cert = xmlSecNssX509CertBase64DerRead(content);
1030
+ if(cert == NULL) {
1031
+ xmlSecError(XMLSEC_ERRORS_HERE,
1032
+ xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
1033
+ "xmlSecNssX509CertBase64DerRead",
1034
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1035
+ XMLSEC_ERRORS_NO_MESSAGE);
1036
+ xmlFree(content);
1037
+ return(-1);
1038
+ }
1039
+
1040
+ ret = xmlSecNssKeyDataX509AdoptCert(data, cert);
1041
+ if(ret < 0) {
1042
+ xmlSecError(XMLSEC_ERRORS_HERE,
1043
+ xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
1044
+ "xmlSecNssKeyDataX509AdoptCert",
1045
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1046
+ XMLSEC_ERRORS_NO_MESSAGE);
1047
+ CERT_DestroyCertificate(cert);
1048
+ xmlFree(content);
1049
+ return(-1);
1050
+ }
1051
+
1052
+ xmlFree(content);
1053
+ return(0);
1054
+ }
1055
+
1056
+ static int
1057
+ xmlSecNssX509CertificateNodeWrite(CERTCertificate* cert, xmlNodePtr node, xmlSecKeyInfoCtxPtr keyInfoCtx) {
1058
+ xmlChar* buf;
1059
+ xmlNodePtr cur;
1060
+
1061
+ xmlSecAssert2(cert != NULL, -1);
1062
+ xmlSecAssert2(node != NULL, -1);
1063
+ xmlSecAssert2(keyInfoCtx != NULL, -1);
1064
+
1065
+ /* set base64 lines size from context */
1066
+ buf = xmlSecNssX509CertBase64DerWrite(cert, keyInfoCtx->base64LineSize);
1067
+ if(buf == NULL) {
1068
+ xmlSecError(XMLSEC_ERRORS_HERE,
1069
+ NULL,
1070
+ "xmlSecNssX509CertBase64DerWrite",
1071
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1072
+ XMLSEC_ERRORS_NO_MESSAGE);
1073
+ return(-1);
1074
+ }
1075
+
1076
+ cur = xmlSecAddChild(node, xmlSecNodeX509Certificate, xmlSecDSigNs);
1077
+ if(cur == NULL) {
1078
+ xmlSecError(XMLSEC_ERRORS_HERE,
1079
+ NULL,
1080
+ "xmlSecAddChild",
1081
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1082
+ "node=%s",
1083
+ xmlSecErrorsSafeString(xmlSecNodeX509Certificate));
1084
+ xmlFree(buf);
1085
+ return(-1);
1086
+ }
1087
+
1088
+ /* todo: add \n around base64 data - from context */
1089
+ /* todo: add errors check */
1090
+ xmlNodeSetContent(cur, xmlSecStringCR);
1091
+ xmlNodeSetContent(cur, buf);
1092
+ xmlFree(buf);
1093
+ return(0);
1094
+ }
1095
+
1096
+ static int
1097
+ xmlSecNssX509SubjectNameNodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xmlSecKeyInfoCtxPtr keyInfoCtx) {
1098
+ xmlSecKeyDataStorePtr x509Store;
1099
+ xmlChar* subject;
1100
+ CERTCertificate* cert;
1101
+ int ret;
1102
+
1103
+ xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecNssKeyDataX509Id), -1);
1104
+ xmlSecAssert2(node != NULL, -1);
1105
+ xmlSecAssert2(keyInfoCtx != NULL, -1);
1106
+ xmlSecAssert2(keyInfoCtx->keysMngr != NULL, -1);
1107
+
1108
+ x509Store = xmlSecKeysMngrGetDataStore(keyInfoCtx->keysMngr, xmlSecNssX509StoreId);
1109
+ if(x509Store == NULL) {
1110
+ xmlSecError(XMLSEC_ERRORS_HERE,
1111
+ xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
1112
+ "xmlSecKeysMngrGetDataStore",
1113
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1114
+ XMLSEC_ERRORS_NO_MESSAGE);
1115
+ return(-1);
1116
+ }
1117
+
1118
+ subject = xmlNodeGetContent(node);
1119
+ if((subject == NULL) || (xmlSecIsEmptyString(subject) == 1)) {
1120
+ if(subject != NULL) {
1121
+ xmlFree(subject);
1122
+ }
1123
+ if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_STOP_ON_EMPTY_NODE) != 0) {
1124
+ xmlSecError(XMLSEC_ERRORS_HERE,
1125
+ xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
1126
+ xmlSecErrorsSafeString(xmlSecNodeGetName(node)),
1127
+ XMLSEC_ERRORS_R_INVALID_NODE_CONTENT,
1128
+ XMLSEC_ERRORS_NO_MESSAGE);
1129
+ return(-1);
1130
+ }
1131
+ return(0);
1132
+ }
1133
+
1134
+ cert = xmlSecNssX509StoreFindCert(x509Store, subject, NULL, NULL, NULL, keyInfoCtx);
1135
+ if(cert == NULL){
1136
+
1137
+ if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_UNKNOWN_CERT) != 0) {
1138
+ xmlSecError(XMLSEC_ERRORS_HERE,
1139
+ xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
1140
+ NULL,
1141
+ XMLSEC_ERRORS_R_CERT_NOT_FOUND,
1142
+ "subject=%s",
1143
+ xmlSecErrorsSafeString(subject));
1144
+ xmlFree(subject);
1145
+ return(-1);
1146
+ }
1147
+
1148
+ xmlFree(subject);
1149
+ return(0);
1150
+ }
1151
+
1152
+ ret = xmlSecNssKeyDataX509AdoptCert(data, cert);
1153
+ if(ret < 0) {
1154
+ xmlSecError(XMLSEC_ERRORS_HERE,
1155
+ xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
1156
+ "xmlSecNssKeyDataX509AdoptCert",
1157
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1158
+ XMLSEC_ERRORS_NO_MESSAGE);
1159
+ CERT_DestroyCertificate(cert);
1160
+ xmlFree(subject);
1161
+ return(-1);
1162
+ }
1163
+
1164
+ xmlFree(subject);
1165
+ return(0);
1166
+ }
1167
+
1168
+ static int
1169
+ xmlSecNssX509SubjectNameNodeWrite(CERTCertificate* cert, xmlNodePtr node, xmlSecKeyInfoCtxPtr keyInfoCtx ATTRIBUTE_UNUSED) {
1170
+ xmlChar* buf = NULL;
1171
+ xmlNodePtr cur = NULL;
1172
+
1173
+ xmlSecAssert2(cert != NULL, -1);
1174
+ xmlSecAssert2(node != NULL, -1);
1175
+
1176
+ buf = xmlSecNssX509NameWrite(&(cert->subject));
1177
+ if(buf == NULL) {
1178
+ xmlSecError(XMLSEC_ERRORS_HERE,
1179
+ NULL,
1180
+ "xmlSecNssX509NameWrite(&(cert->subject))",
1181
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1182
+ XMLSEC_ERRORS_NO_MESSAGE);
1183
+ return(-1);
1184
+ }
1185
+
1186
+ cur = xmlSecAddChild(node, xmlSecNodeX509SubjectName, xmlSecDSigNs);
1187
+ if(cur == NULL) {
1188
+ xmlSecError(XMLSEC_ERRORS_HERE,
1189
+ NULL,
1190
+ "xmlSecAddChild",
1191
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1192
+ "node=%s",
1193
+ xmlSecErrorsSafeString(xmlSecNodeX509SubjectName));
1194
+ xmlFree(buf);
1195
+ return(-1);
1196
+ }
1197
+ xmlSecNodeEncodeAndSetContent(cur, buf);
1198
+ xmlFree(buf);
1199
+ return(0);
1200
+ }
1201
+
1202
+ static int
1203
+ xmlSecNssX509IssuerSerialNodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xmlSecKeyInfoCtxPtr keyInfoCtx) {
1204
+ xmlSecKeyDataStorePtr x509Store;
1205
+ xmlNodePtr cur;
1206
+ xmlChar *issuerName;
1207
+ xmlChar *issuerSerial;
1208
+ CERTCertificate* cert;
1209
+ int ret;
1210
+
1211
+ xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecNssKeyDataX509Id), -1);
1212
+ xmlSecAssert2(node != NULL, -1);
1213
+ xmlSecAssert2(keyInfoCtx != NULL, -1);
1214
+ xmlSecAssert2(keyInfoCtx->keysMngr != NULL, -1);
1215
+
1216
+ x509Store = xmlSecKeysMngrGetDataStore(keyInfoCtx->keysMngr, xmlSecNssX509StoreId);
1217
+ if(x509Store == NULL) {
1218
+ xmlSecError(XMLSEC_ERRORS_HERE,
1219
+ xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
1220
+ "xmlSecKeysMngrGetDataStore",
1221
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1222
+ XMLSEC_ERRORS_NO_MESSAGE);
1223
+ return(-1);
1224
+ }
1225
+
1226
+ cur = xmlSecGetNextElementNode(node->children);
1227
+ if(cur == NULL) {
1228
+ if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_STOP_ON_EMPTY_NODE) != 0) {
1229
+ xmlSecError(XMLSEC_ERRORS_HERE,
1230
+ xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
1231
+ xmlSecErrorsSafeString(xmlSecNodeX509IssuerName),
1232
+ XMLSEC_ERRORS_R_NODE_NOT_FOUND,
1233
+ "node=%s",
1234
+ xmlSecErrorsSafeString(xmlSecNodeGetName(cur)));
1235
+ return(-1);
1236
+ }
1237
+ return(0);
1238
+ }
1239
+
1240
+ /* the first is required node X509IssuerName */
1241
+ if(!xmlSecCheckNodeName(cur, xmlSecNodeX509IssuerName, xmlSecDSigNs)) {
1242
+ xmlSecError(XMLSEC_ERRORS_HERE,
1243
+ xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
1244
+ xmlSecErrorsSafeString(xmlSecNodeX509IssuerName),
1245
+ XMLSEC_ERRORS_R_NODE_NOT_FOUND,
1246
+ "node=%s",
1247
+ xmlSecErrorsSafeString(xmlSecNodeGetName(cur)));
1248
+ return(-1);
1249
+ }
1250
+ issuerName = xmlNodeGetContent(cur);
1251
+ if(issuerName == NULL) {
1252
+ xmlSecError(XMLSEC_ERRORS_HERE,
1253
+ xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
1254
+ xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
1255
+ XMLSEC_ERRORS_R_INVALID_NODE_CONTENT,
1256
+ "node=%s",
1257
+ xmlSecErrorsSafeString(xmlSecNodeX509IssuerName));
1258
+ return(-1);
1259
+ }
1260
+ cur = xmlSecGetNextElementNode(cur->next);
1261
+
1262
+ /* next is required node X509SerialNumber */
1263
+ if((cur == NULL) || !xmlSecCheckNodeName(cur, xmlSecNodeX509SerialNumber, xmlSecDSigNs)) {
1264
+ xmlSecError(XMLSEC_ERRORS_HERE,
1265
+ xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
1266
+ xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
1267
+ XMLSEC_ERRORS_R_NODE_NOT_FOUND,
1268
+ "node=%s",
1269
+ xmlSecErrorsSafeString(xmlSecNodeX509SerialNumber));
1270
+ xmlFree(issuerName);
1271
+ return(-1);
1272
+ }
1273
+ issuerSerial = xmlNodeGetContent(cur);
1274
+ if(issuerSerial == NULL) {
1275
+ xmlSecError(XMLSEC_ERRORS_HERE,
1276
+ xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
1277
+ xmlSecErrorsSafeString(xmlSecNodeX509SerialNumber),
1278
+ XMLSEC_ERRORS_R_INVALID_NODE_CONTENT,
1279
+ "node=%s",
1280
+ xmlSecErrorsSafeString(xmlSecNodeGetName(cur)));
1281
+ xmlFree(issuerName);
1282
+ return(-1);
1283
+ }
1284
+ cur = xmlSecGetNextElementNode(cur->next);
1285
+
1286
+ if(cur != NULL) {
1287
+ xmlSecError(XMLSEC_ERRORS_HERE,
1288
+ xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
1289
+ xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
1290
+ XMLSEC_ERRORS_R_UNEXPECTED_NODE,
1291
+ XMLSEC_ERRORS_NO_MESSAGE);
1292
+ xmlFree(issuerSerial);
1293
+ xmlFree(issuerName);
1294
+ return(-1);
1295
+ }
1296
+
1297
+ cert = xmlSecNssX509StoreFindCert(x509Store, NULL, issuerName, issuerSerial, NULL, keyInfoCtx);
1298
+ if(cert == NULL){
1299
+ if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_UNKNOWN_CERT) != 0) {
1300
+ xmlSecError(XMLSEC_ERRORS_HERE,
1301
+ xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
1302
+ NULL,
1303
+ XMLSEC_ERRORS_R_CERT_NOT_FOUND,
1304
+ "issuerName=%s;issuerSerial=%s",
1305
+ xmlSecErrorsSafeString(issuerName),
1306
+ xmlSecErrorsSafeString(issuerSerial));
1307
+ xmlFree(issuerSerial);
1308
+ xmlFree(issuerName);
1309
+ return(-1);
1310
+ }
1311
+
1312
+ xmlFree(issuerSerial);
1313
+ xmlFree(issuerName);
1314
+ return(0);
1315
+ }
1316
+
1317
+ ret = xmlSecNssKeyDataX509AdoptCert(data, cert);
1318
+ if(ret < 0) {
1319
+ xmlSecError(XMLSEC_ERRORS_HERE,
1320
+ xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
1321
+ "xmlSecNssKeyDataX509AdoptCert",
1322
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1323
+ XMLSEC_ERRORS_NO_MESSAGE);
1324
+ CERT_DestroyCertificate(cert);
1325
+ xmlFree(issuerSerial);
1326
+ xmlFree(issuerName);
1327
+ return(-1);
1328
+ }
1329
+
1330
+ xmlFree(issuerSerial);
1331
+ xmlFree(issuerName);
1332
+ return(0);
1333
+ }
1334
+
1335
+ static int
1336
+ xmlSecNssX509IssuerSerialNodeWrite(CERTCertificate* cert, xmlNodePtr node, xmlSecKeyInfoCtxPtr keyInfoCtx ATTRIBUTE_UNUSED) {
1337
+ xmlNodePtr cur;
1338
+ xmlNodePtr issuerNameNode;
1339
+ xmlNodePtr issuerNumberNode;
1340
+ xmlChar* buf;
1341
+
1342
+ xmlSecAssert2(cert != NULL, -1);
1343
+ xmlSecAssert2(node != NULL, -1);
1344
+
1345
+ /* create xml nodes */
1346
+ cur = xmlSecAddChild(node, xmlSecNodeX509IssuerSerial, xmlSecDSigNs);
1347
+ if(cur == NULL) {
1348
+ xmlSecError(XMLSEC_ERRORS_HERE,
1349
+ NULL,
1350
+ "xmlSecAddChild",
1351
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1352
+ "node=%s",
1353
+ xmlSecErrorsSafeString(xmlSecNodeX509IssuerSerial));
1354
+ return(-1);
1355
+ }
1356
+
1357
+ issuerNameNode = xmlSecAddChild(cur, xmlSecNodeX509IssuerName, xmlSecDSigNs);
1358
+ if(issuerNameNode == NULL) {
1359
+ xmlSecError(XMLSEC_ERRORS_HERE,
1360
+ NULL,
1361
+ "xmlSecAddChild",
1362
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1363
+ "node=%s",
1364
+ xmlSecErrorsSafeString(xmlSecNodeX509IssuerName));
1365
+ return(-1);
1366
+ }
1367
+
1368
+ issuerNumberNode = xmlSecAddChild(cur, xmlSecNodeX509SerialNumber, xmlSecDSigNs);
1369
+ if(issuerNumberNode == NULL) {
1370
+ xmlSecError(XMLSEC_ERRORS_HERE,
1371
+ NULL,
1372
+ "xmlSecAddChild",
1373
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1374
+ "node=%s",
1375
+ xmlSecErrorsSafeString(xmlSecNodeX509SerialNumber));
1376
+ return(-1);
1377
+ }
1378
+
1379
+ /* write data */
1380
+ buf = xmlSecNssX509NameWrite(&(cert->issuer));
1381
+ if(buf == NULL) {
1382
+ xmlSecError(XMLSEC_ERRORS_HERE,
1383
+ NULL,
1384
+ "xmlSecNssX509NameWrite(&(cert->issuer))",
1385
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1386
+ XMLSEC_ERRORS_NO_MESSAGE);
1387
+ return(-1);
1388
+ }
1389
+ xmlSecNodeEncodeAndSetContent(issuerNameNode, buf);
1390
+ xmlFree(buf);
1391
+
1392
+ buf = xmlSecNssASN1IntegerWrite(&(cert->serialNumber));
1393
+ if(buf == NULL) {
1394
+ xmlSecError(XMLSEC_ERRORS_HERE,
1395
+ NULL,
1396
+ "xmlSecNssASN1IntegerWrite(&(cert->serialNumber))",
1397
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1398
+ XMLSEC_ERRORS_NO_MESSAGE);
1399
+ return(-1);
1400
+ }
1401
+ xmlNodeSetContent(issuerNumberNode, buf);
1402
+ xmlFree(buf);
1403
+
1404
+ return(0);
1405
+ }
1406
+
1407
+ static int
1408
+ xmlSecNssX509SKINodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xmlSecKeyInfoCtxPtr keyInfoCtx) {
1409
+ xmlSecKeyDataStorePtr x509Store;
1410
+ xmlChar* ski;
1411
+ CERTCertificate* cert;
1412
+ int ret;
1413
+
1414
+ xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecNssKeyDataX509Id), -1);
1415
+ xmlSecAssert2(node != NULL, -1);
1416
+ xmlSecAssert2(keyInfoCtx != NULL, -1);
1417
+ xmlSecAssert2(keyInfoCtx->keysMngr != NULL, -1);
1418
+
1419
+ x509Store = xmlSecKeysMngrGetDataStore(keyInfoCtx->keysMngr, xmlSecNssX509StoreId);
1420
+ if(x509Store == NULL) {
1421
+ xmlSecError(XMLSEC_ERRORS_HERE,
1422
+ xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
1423
+ "xmlSecKeysMngrGetDataStore",
1424
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1425
+ XMLSEC_ERRORS_NO_MESSAGE);
1426
+ return(-1);
1427
+ }
1428
+
1429
+ ski = xmlNodeGetContent(node);
1430
+ if((ski == NULL) || (xmlSecIsEmptyString(ski) == 1)) {
1431
+ if(ski != NULL) {
1432
+ xmlFree(ski);
1433
+ }
1434
+ if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_STOP_ON_EMPTY_NODE) != 0) {
1435
+ xmlSecError(XMLSEC_ERRORS_HERE,
1436
+ xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
1437
+ xmlSecErrorsSafeString(xmlSecNodeGetName(node)),
1438
+ XMLSEC_ERRORS_R_INVALID_NODE_CONTENT,
1439
+ "node=%s",
1440
+ xmlSecErrorsSafeString(xmlSecNodeX509SKI));
1441
+ return(-1);
1442
+ }
1443
+ return(0);
1444
+ }
1445
+
1446
+ cert = xmlSecNssX509StoreFindCert(x509Store, NULL, NULL, NULL, ski, keyInfoCtx);
1447
+ if(cert == NULL){
1448
+ xmlFree(ski);
1449
+
1450
+ if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_UNKNOWN_CERT) != 0) {
1451
+ xmlSecError(XMLSEC_ERRORS_HERE,
1452
+ xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
1453
+ NULL,
1454
+ XMLSEC_ERRORS_R_CERT_NOT_FOUND,
1455
+ "ski=%s",
1456
+ xmlSecErrorsSafeString(ski));
1457
+ return(-1);
1458
+ }
1459
+ return(0);
1460
+ }
1461
+
1462
+ ret = xmlSecNssKeyDataX509AdoptCert(data, cert);
1463
+ if(ret < 0) {
1464
+ xmlSecError(XMLSEC_ERRORS_HERE,
1465
+ xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
1466
+ "xmlSecNssKeyDataX509AdoptCert",
1467
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1468
+ XMLSEC_ERRORS_NO_MESSAGE);
1469
+ CERT_DestroyCertificate(cert);
1470
+ xmlFree(ski);
1471
+ return(-1);
1472
+ }
1473
+
1474
+ xmlFree(ski);
1475
+ return(0);
1476
+ }
1477
+
1478
+ static int
1479
+ xmlSecNssX509SKINodeWrite(CERTCertificate* cert, xmlNodePtr node, xmlSecKeyInfoCtxPtr keyInfoCtx ATTRIBUTE_UNUSED) {
1480
+ xmlChar *buf = NULL;
1481
+ xmlNodePtr cur = NULL;
1482
+
1483
+ xmlSecAssert2(cert != NULL, -1);
1484
+ xmlSecAssert2(node != NULL, -1);
1485
+
1486
+ buf = xmlSecNssX509SKIWrite(cert);
1487
+ if(buf == NULL) {
1488
+ xmlSecError(XMLSEC_ERRORS_HERE,
1489
+ NULL,
1490
+ "xmlSecNssX509SKIWrite",
1491
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1492
+ XMLSEC_ERRORS_NO_MESSAGE);
1493
+ return(-1);
1494
+ }
1495
+
1496
+ cur = xmlSecAddChild(node, xmlSecNodeX509SKI, xmlSecDSigNs);
1497
+ if(cur == NULL) {
1498
+ xmlSecError(XMLSEC_ERRORS_HERE,
1499
+ NULL,
1500
+ "xmlSecAddChild",
1501
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1502
+ "new_node=%s",
1503
+ xmlSecErrorsSafeString(xmlSecNodeX509SKI));
1504
+ xmlFree(buf);
1505
+ return(-1);
1506
+ }
1507
+ xmlSecNodeEncodeAndSetContent(cur, buf);
1508
+ xmlFree(buf);
1509
+
1510
+ return(0);
1511
+ }
1512
+
1513
+ static int
1514
+ xmlSecNssX509CRLNodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xmlSecKeyInfoCtxPtr keyInfoCtx) {
1515
+ xmlChar *content;
1516
+ CERTSignedCrl* crl;
1517
+
1518
+ xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecNssKeyDataX509Id), -1);
1519
+ xmlSecAssert2(node != NULL, -1);
1520
+ xmlSecAssert2(keyInfoCtx != NULL, -1);
1521
+
1522
+ content = xmlNodeGetContent(node);
1523
+ if((content == NULL) || (xmlSecIsEmptyString(content) == 1)) {
1524
+ if(content != NULL) {
1525
+ xmlFree(content);
1526
+ }
1527
+ if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_STOP_ON_EMPTY_NODE) != 0) {
1528
+ xmlSecError(XMLSEC_ERRORS_HERE,
1529
+ xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
1530
+ xmlSecErrorsSafeString(xmlSecNodeGetName(node)),
1531
+ XMLSEC_ERRORS_R_INVALID_NODE_CONTENT,
1532
+ XMLSEC_ERRORS_NO_MESSAGE);
1533
+ return(-1);
1534
+ }
1535
+ return(0);
1536
+ }
1537
+
1538
+ crl = xmlSecNssX509CrlBase64DerRead(content, keyInfoCtx);
1539
+ if(crl == NULL) {
1540
+ xmlSecError(XMLSEC_ERRORS_HERE,
1541
+ xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
1542
+ "xmlSecNssX509CrlBase64DerRead",
1543
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1544
+ XMLSEC_ERRORS_NO_MESSAGE);
1545
+ xmlFree(content);
1546
+ return(-1);
1547
+ }
1548
+
1549
+ SEC_DestroyCrl(crl);
1550
+ xmlFree(content);
1551
+ return(0);
1552
+ }
1553
+
1554
+ static int
1555
+ xmlSecNssX509CRLNodeWrite(CERTSignedCrl* crl, xmlNodePtr node, xmlSecKeyInfoCtxPtr keyInfoCtx) {
1556
+ xmlChar* buf = NULL;
1557
+ xmlNodePtr cur = NULL;
1558
+
1559
+ xmlSecAssert2(crl != NULL, -1);
1560
+ xmlSecAssert2(node != NULL, -1);
1561
+ xmlSecAssert2(keyInfoCtx != NULL, -1);
1562
+
1563
+ /* set base64 lines size from context */
1564
+ buf = xmlSecNssX509CrlBase64DerWrite(crl, keyInfoCtx->base64LineSize);
1565
+ if(buf == NULL) {
1566
+ xmlSecError(XMLSEC_ERRORS_HERE,
1567
+ NULL,
1568
+ "xmlSecNssX509CrlBase64DerWrite",
1569
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1570
+ XMLSEC_ERRORS_NO_MESSAGE);
1571
+ return(-1);
1572
+ }
1573
+
1574
+ cur = xmlSecAddChild(node, xmlSecNodeX509CRL, xmlSecDSigNs);
1575
+ if(cur == NULL) {
1576
+ xmlSecError(XMLSEC_ERRORS_HERE,
1577
+ NULL,
1578
+ "xmlSecAddChild",
1579
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1580
+ "new_node=%s",
1581
+ xmlSecErrorsSafeString(xmlSecNodeX509CRL));
1582
+ xmlFree(buf);
1583
+ return(-1);
1584
+ }
1585
+ /* todo: add \n around base64 data - from context */
1586
+ /* todo: add errors check */
1587
+ xmlNodeSetContent(cur, xmlSecStringCR);
1588
+ xmlNodeSetContent(cur, buf);
1589
+ xmlFree(buf);
1590
+
1591
+ return(0);
1592
+ }
1593
+
1594
+
1595
+ static int
1596
+ xmlSecNssKeyDataX509VerifyAndExtractKey(xmlSecKeyDataPtr data, xmlSecKeyPtr key,
1597
+ xmlSecKeyInfoCtxPtr keyInfoCtx) {
1598
+ xmlSecNssX509DataCtxPtr ctx;
1599
+ xmlSecKeyDataStorePtr x509Store;
1600
+ int ret;
1601
+ SECStatus status;
1602
+ PRTime notBefore, notAfter;
1603
+
1604
+ xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecNssKeyDataX509Id), -1);
1605
+ xmlSecAssert2(key != NULL, -1);
1606
+ xmlSecAssert2(keyInfoCtx != NULL, -1);
1607
+ xmlSecAssert2(keyInfoCtx->keysMngr != NULL, -1);
1608
+
1609
+ ctx = xmlSecNssX509DataGetCtx(data);
1610
+ xmlSecAssert2(ctx != NULL, -1);
1611
+
1612
+ x509Store = xmlSecKeysMngrGetDataStore(keyInfoCtx->keysMngr, xmlSecNssX509StoreId);
1613
+ if(x509Store == NULL) {
1614
+ xmlSecError(XMLSEC_ERRORS_HERE,
1615
+ xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
1616
+ "xmlSecKeysMngrGetDataStore",
1617
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1618
+ XMLSEC_ERRORS_NO_MESSAGE);
1619
+ return(-1);
1620
+ }
1621
+
1622
+ if((ctx->keyCert == NULL) && (ctx->certsList != NULL) && (xmlSecKeyGetValue(key) == NULL)) {
1623
+ CERTCertificate* cert;
1624
+
1625
+ cert = xmlSecNssX509StoreVerify(x509Store, ctx->certsList, keyInfoCtx);
1626
+ if(cert != NULL) {
1627
+ xmlSecKeyDataPtr keyValue;
1628
+
1629
+ ctx->keyCert = CERT_DupCertificate(cert);
1630
+ if(ctx->keyCert == NULL) {
1631
+ xmlSecError(XMLSEC_ERRORS_HERE,
1632
+ xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
1633
+ "CERT_DupCertificate",
1634
+ XMLSEC_ERRORS_R_CRYPTO_FAILED,
1635
+ XMLSEC_ERRORS_NO_MESSAGE);
1636
+ return(-1);
1637
+ }
1638
+
1639
+ keyValue = xmlSecNssX509CertGetKey(ctx->keyCert);
1640
+ if(keyValue == NULL) {
1641
+ xmlSecError(XMLSEC_ERRORS_HERE,
1642
+ xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
1643
+ "xmlSecNssX509CertGetKey",
1644
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1645
+ XMLSEC_ERRORS_NO_MESSAGE);
1646
+ return(-1);
1647
+ }
1648
+
1649
+ /* verify that the key matches our expectations */
1650
+ if(xmlSecKeyReqMatchKeyValue(&(keyInfoCtx->keyReq), keyValue) != 1) {
1651
+ xmlSecError(XMLSEC_ERRORS_HERE,
1652
+ xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
1653
+ "xmlSecKeyReqMatchKeyValue",
1654
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1655
+ XMLSEC_ERRORS_NO_MESSAGE);
1656
+ xmlSecKeyDataDestroy(keyValue);
1657
+ return(-1);
1658
+ }
1659
+
1660
+ ret = xmlSecKeySetValue(key, keyValue);
1661
+ if(ret < 0) {
1662
+ xmlSecError(XMLSEC_ERRORS_HERE,
1663
+ xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
1664
+ "xmlSecKeySetValue",
1665
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1666
+ XMLSEC_ERRORS_NO_MESSAGE);
1667
+ xmlSecKeyDataDestroy(keyValue);
1668
+ return(-1);
1669
+ }
1670
+
1671
+ status = CERT_GetCertTimes(ctx->keyCert, &notBefore, &notAfter);
1672
+ if (status == SECSuccess) {
1673
+ ret = xmlSecNssX509CertGetTime(&notBefore, &(key->notValidBefore));
1674
+ if(ret < 0) {
1675
+ xmlSecError(XMLSEC_ERRORS_HERE,
1676
+ xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
1677
+ "xmlSecNssX509CertGetTime",
1678
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1679
+ "notValidBefore");
1680
+ return(-1);
1681
+ }
1682
+ ret = xmlSecNssX509CertGetTime(&notAfter, &(key->notValidAfter));
1683
+ if(ret < 0) {
1684
+ xmlSecError(XMLSEC_ERRORS_HERE,
1685
+ xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
1686
+ "xmlSecNssX509CertGetTime",
1687
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1688
+ "notValidAfter");
1689
+ return(-1);
1690
+ }
1691
+ } else {
1692
+ key->notValidBefore = key->notValidAfter = 0;
1693
+ }
1694
+ } else if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_INVALID_CERT) != 0) {
1695
+ xmlSecError(XMLSEC_ERRORS_HERE,
1696
+ xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
1697
+ NULL,
1698
+ XMLSEC_ERRORS_R_CERT_NOT_FOUND,
1699
+ XMLSEC_ERRORS_NO_MESSAGE);
1700
+ return(-1);
1701
+ }
1702
+ }
1703
+ return(0);
1704
+ }
1705
+
1706
+ static int
1707
+ xmlSecNssX509CertGetTime(PRTime* t, time_t* res) {
1708
+
1709
+ PRTime tmp64_1, tmp64_2;
1710
+ PRUint32 tmp32 = 1000000;
1711
+
1712
+ xmlSecAssert2(t != NULL, -1);
1713
+ xmlSecAssert2(res != NULL, -1);
1714
+
1715
+ /* PRTime is time in microseconds since epoch. Divide by 1000000 to
1716
+ * convert to seconds, then convert to an unsigned 32 bit number
1717
+ */
1718
+ (*res) = 0;
1719
+ LL_UI2L(tmp64_1, tmp32);
1720
+ LL_DIV(tmp64_2, *t, tmp64_1);
1721
+ LL_L2UI(tmp32, tmp64_2);
1722
+
1723
+ (*res) = (time_t)(tmp32);
1724
+
1725
+ return(0);
1726
+ }
1727
+
1728
+ /**
1729
+ * xmlSecNssX509CertGetKey:
1730
+ * @cert: the certificate.
1731
+ *
1732
+ * Extracts public key from the @cert.
1733
+ *
1734
+ * Returns: public key value or NULL if an error occurs.
1735
+ */
1736
+ xmlSecKeyDataPtr
1737
+ xmlSecNssX509CertGetKey(CERTCertificate* cert) {
1738
+ xmlSecKeyDataPtr data;
1739
+ SECKEYPublicKey *pubkey = NULL;
1740
+
1741
+ xmlSecAssert2(cert != NULL, NULL);
1742
+
1743
+ pubkey = CERT_ExtractPublicKey(cert);
1744
+ if(pubkey == NULL) {
1745
+ xmlSecError(XMLSEC_ERRORS_HERE,
1746
+ NULL,
1747
+ "CERT_ExtractPublicKey",
1748
+ XMLSEC_ERRORS_R_CRYPTO_FAILED,
1749
+ "error code=%d", PORT_GetError());
1750
+ return(NULL);
1751
+ }
1752
+
1753
+ data = xmlSecNssPKIAdoptKey(NULL, pubkey);
1754
+ if(data == NULL) {
1755
+ xmlSecError(XMLSEC_ERRORS_HERE,
1756
+ NULL,
1757
+ "xmlSecNssPKIAdoptKey",
1758
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1759
+ XMLSEC_ERRORS_NO_MESSAGE);
1760
+ SECKEY_DestroyPublicKey(pubkey);
1761
+ return(NULL);
1762
+ }
1763
+
1764
+ return(data);
1765
+ }
1766
+
1767
+ static CERTCertificate*
1768
+ xmlSecNssX509CertBase64DerRead(xmlChar* buf) {
1769
+ int ret;
1770
+
1771
+ xmlSecAssert2(buf != NULL, NULL);
1772
+
1773
+ /* usual trick with base64 decoding "in-place" */
1774
+ ret = xmlSecBase64Decode(buf, (xmlSecByte*)buf, xmlStrlen(buf));
1775
+ if(ret < 0) {
1776
+ xmlSecError(XMLSEC_ERRORS_HERE,
1777
+ NULL,
1778
+ "xmlSecBase64Decode",
1779
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1780
+ XMLSEC_ERRORS_NO_MESSAGE);
1781
+ return(NULL);
1782
+ }
1783
+
1784
+ return(xmlSecNssX509CertDerRead((xmlSecByte*)buf, ret));
1785
+ }
1786
+
1787
+
1788
+ static CERTCertificate*
1789
+ xmlSecNssX509CertDerRead(const xmlSecByte* buf, xmlSecSize size) {
1790
+ CERTCertificate *cert;
1791
+ SECItem derCert;
1792
+
1793
+ xmlSecAssert2(buf != NULL, NULL);
1794
+ xmlSecAssert2(size > 0, NULL);
1795
+
1796
+ derCert.data = (unsigned char *)buf;
1797
+ derCert.len = size;
1798
+
1799
+ /* decode cert and import to temporary cert db */
1800
+ cert = __CERT_NewTempCertificate(CERT_GetDefaultCertDB(), &derCert,
1801
+ NULL, PR_FALSE, PR_TRUE);
1802
+ if(cert == NULL) {
1803
+ xmlSecError(XMLSEC_ERRORS_HERE,
1804
+ NULL,
1805
+ "__CERT_NewTempCertificate",
1806
+ XMLSEC_ERRORS_R_CRYPTO_FAILED,
1807
+ "error code=%d", PORT_GetError());
1808
+ return(NULL);
1809
+ }
1810
+
1811
+
1812
+ return(cert);
1813
+ }
1814
+
1815
+ static xmlChar*
1816
+ xmlSecNssX509CertBase64DerWrite(CERTCertificate* cert, int base64LineWrap) {
1817
+ xmlChar *res = NULL;
1818
+ xmlSecByte *p = NULL;
1819
+ long size;
1820
+
1821
+ xmlSecAssert2(cert != NULL, NULL);
1822
+
1823
+ p = cert->derCert.data;
1824
+ size = cert->derCert.len;
1825
+ if((size <= 0) || (p == NULL)){
1826
+ xmlSecError(XMLSEC_ERRORS_HERE,
1827
+ NULL,
1828
+ "cert->derCert",
1829
+ XMLSEC_ERRORS_R_CRYPTO_FAILED,
1830
+ "error code=%d", PORT_GetError());
1831
+ return(NULL);
1832
+ }
1833
+
1834
+ res = xmlSecBase64Encode(p, size, base64LineWrap);
1835
+ if(res == NULL) {
1836
+ xmlSecError(XMLSEC_ERRORS_HERE,
1837
+ NULL,
1838
+ "xmlSecBase64Encode",
1839
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1840
+ XMLSEC_ERRORS_NO_MESSAGE);
1841
+ return(NULL);
1842
+ }
1843
+
1844
+ return(res);
1845
+ }
1846
+
1847
+ static CERTSignedCrl*
1848
+ xmlSecNssX509CrlBase64DerRead(xmlChar* buf,
1849
+ xmlSecKeyInfoCtxPtr keyInfoCtx) {
1850
+ int ret;
1851
+
1852
+ xmlSecAssert2(buf != NULL, NULL);
1853
+
1854
+ /* usual trick with base64 decoding "in-place" */
1855
+ ret = xmlSecBase64Decode(buf, (xmlSecByte*)buf, xmlStrlen(buf));
1856
+ if(ret < 0) {
1857
+ xmlSecError(XMLSEC_ERRORS_HERE,
1858
+ NULL,
1859
+ "xmlSecBase64Decode",
1860
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1861
+ XMLSEC_ERRORS_NO_MESSAGE);
1862
+ return(NULL);
1863
+ }
1864
+
1865
+ return(xmlSecNssX509CrlDerRead((xmlSecByte*)buf, ret, keyInfoCtx));
1866
+ }
1867
+
1868
+
1869
+ static CERTSignedCrl*
1870
+ xmlSecNssX509CrlDerRead(xmlSecByte* buf, xmlSecSize size,
1871
+ xmlSecKeyInfoCtxPtr keyInfoCtx) {
1872
+ CERTSignedCrl *crl = NULL;
1873
+ SECItem derCrl;
1874
+ PK11SlotInfo *slot = NULL;
1875
+ PRInt32 importOptions = CRL_IMPORT_DEFAULT_OPTIONS;
1876
+
1877
+ xmlSecAssert2(buf != NULL, NULL);
1878
+ xmlSecAssert2(keyInfoCtx != NULL, NULL);
1879
+ xmlSecAssert2(size > 0, NULL);
1880
+
1881
+ derCrl.data = buf;
1882
+ derCrl.len = size;
1883
+
1884
+ /* we're importing a CRL, it is ok to use the internal slot.
1885
+ * crlutil does it :)
1886
+ */
1887
+ slot = xmlSecNssGetInternalKeySlot();
1888
+ if (slot == NULL) {
1889
+ xmlSecError(XMLSEC_ERRORS_HERE,
1890
+ NULL,
1891
+ "xmlSecNssGetInternalKeySlot",
1892
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1893
+ XMLSEC_ERRORS_NO_MESSAGE);
1894
+ return NULL;
1895
+ }
1896
+
1897
+ if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_X509DATA_SKIP_STRICT_CHECKS) != 0)
1898
+ importOptions |= CRL_IMPORT_BYPASS_CHECKS;
1899
+
1900
+ crl = PK11_ImportCRL(slot, &derCrl, NULL, SEC_CRL_TYPE, NULL,
1901
+ importOptions, NULL, CRL_DECODE_DEFAULT_OPTIONS);
1902
+
1903
+ if(crl == NULL) {
1904
+ xmlSecError(XMLSEC_ERRORS_HERE,
1905
+ NULL,
1906
+ "PK11_ImportCRL",
1907
+ XMLSEC_ERRORS_R_CRYPTO_FAILED,
1908
+ "error code=%d", PORT_GetError());
1909
+ PK11_FreeSlot(slot);
1910
+ return(NULL);
1911
+ }
1912
+
1913
+ PK11_FreeSlot(slot);
1914
+ return(crl);
1915
+ }
1916
+
1917
+ static xmlChar*
1918
+ xmlSecNssX509CrlBase64DerWrite(CERTSignedCrl* crl, int base64LineWrap) {
1919
+ xmlChar *res = NULL;
1920
+ xmlSecByte *p = NULL;
1921
+ long size;
1922
+
1923
+ xmlSecAssert2(crl != NULL && crl->derCrl != NULL, NULL);
1924
+
1925
+ p = crl->derCrl->data;
1926
+ size = crl->derCrl->len;
1927
+ if((size <= 0) || (p == NULL)){
1928
+ xmlSecError(XMLSEC_ERRORS_HERE,
1929
+ NULL,
1930
+ "crl->derCrl",
1931
+ XMLSEC_ERRORS_R_CRYPTO_FAILED,
1932
+ "error code=%d", PORT_GetError());
1933
+ return(NULL);
1934
+ }
1935
+
1936
+ res = xmlSecBase64Encode(p, size, base64LineWrap);
1937
+ if(res == NULL) {
1938
+ xmlSecError(XMLSEC_ERRORS_HERE,
1939
+ NULL,
1940
+ "xmlSecBase64Encode",
1941
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1942
+ XMLSEC_ERRORS_NO_MESSAGE);
1943
+ return(NULL);
1944
+ }
1945
+
1946
+ return(res);
1947
+ }
1948
+
1949
+ static xmlChar*
1950
+ xmlSecNssX509NameWrite(CERTName* nm) {
1951
+ xmlChar *res = NULL;
1952
+ char *str;
1953
+
1954
+ xmlSecAssert2(nm != NULL, NULL);
1955
+
1956
+ str = CERT_NameToAscii(nm);
1957
+ if (str == NULL) {
1958
+ xmlSecError(XMLSEC_ERRORS_HERE,
1959
+ NULL,
1960
+ "CERT_NameToAscii",
1961
+ XMLSEC_ERRORS_R_CRYPTO_FAILED,
1962
+ XMLSEC_ERRORS_NO_MESSAGE);
1963
+ return(NULL);
1964
+ }
1965
+
1966
+ res = xmlStrdup(BAD_CAST str);
1967
+ if(res == NULL) {
1968
+ xmlSecError(XMLSEC_ERRORS_HERE,
1969
+ NULL,
1970
+ "xmlStrdup",
1971
+ XMLSEC_ERRORS_R_MALLOC_FAILED,
1972
+ XMLSEC_ERRORS_NO_MESSAGE);
1973
+ PORT_Free(str);
1974
+ return(NULL);
1975
+ }
1976
+ PORT_Free(str);
1977
+ return(res);
1978
+ }
1979
+
1980
+ static xmlChar*
1981
+ xmlSecNssASN1IntegerWrite(SECItem *num) {
1982
+ xmlChar *res = NULL;
1983
+ int resLen = 64; /* not more than 64 chars */
1984
+ PRUint64 val = 0;
1985
+ unsigned int ii = 0;
1986
+ int shift = 0;
1987
+
1988
+ xmlSecAssert2(num != NULL, NULL);
1989
+ xmlSecAssert2(num->type == siBuffer, NULL);
1990
+ xmlSecAssert2(num->len <= 9, NULL);
1991
+ xmlSecAssert2(num->data != NULL, NULL);
1992
+
1993
+ /* HACK : to be fixed after
1994
+ * NSS bug http://bugzilla.mozilla.org/show_bug.cgi?id=212864 is fixed
1995
+ */
1996
+ for(ii = num->len; ii > 0; --ii, shift += 8) {
1997
+ val |= ((PRUint64)num->data[ii - 1]) << shift;
1998
+ }
1999
+
2000
+ res = (xmlChar*)xmlMalloc(resLen + 1);
2001
+ if(res == NULL) {
2002
+ xmlSecError(XMLSEC_ERRORS_HERE,
2003
+ NULL,
2004
+ "xmlStrdup",
2005
+ XMLSEC_ERRORS_R_MALLOC_FAILED,
2006
+ XMLSEC_ERRORS_NO_MESSAGE);
2007
+ return (NULL);
2008
+ }
2009
+
2010
+ PR_snprintf((char*)res, resLen, "%llu", val);
2011
+ return(res);
2012
+ }
2013
+
2014
+ static xmlChar*
2015
+ xmlSecNssX509SKIWrite(CERTCertificate* cert) {
2016
+ xmlChar *res = NULL;
2017
+ SECItem ski;
2018
+ SECStatus rv;
2019
+
2020
+ xmlSecAssert2(cert != NULL, NULL);
2021
+
2022
+ memset(&ski, 0, sizeof(ski));
2023
+
2024
+ rv = CERT_FindSubjectKeyIDExtension(cert, &ski);
2025
+ if (rv != SECSuccess) {
2026
+ xmlSecError(XMLSEC_ERRORS_HERE,
2027
+ NULL,
2028
+ "CERT_FindSubjectKeyIDExtension",
2029
+ XMLSEC_ERRORS_R_CRYPTO_FAILED,
2030
+ XMLSEC_ERRORS_NO_MESSAGE);
2031
+ SECITEM_FreeItem(&ski, PR_FALSE);
2032
+ return(NULL);
2033
+ }
2034
+
2035
+ res = xmlSecBase64Encode(ski.data, ski.len, 0);
2036
+ if(res == NULL) {
2037
+ xmlSecError(XMLSEC_ERRORS_HERE,
2038
+ NULL,
2039
+ "xmlSecBase64Encode",
2040
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
2041
+ XMLSEC_ERRORS_NO_MESSAGE);
2042
+ SECITEM_FreeItem(&ski, PR_FALSE);
2043
+ return(NULL);
2044
+ }
2045
+ SECITEM_FreeItem(&ski, PR_FALSE);
2046
+
2047
+ return(res);
2048
+ }
2049
+
2050
+
2051
+ static void
2052
+ xmlSecNssX509CertDebugDump(CERTCertificate* cert, FILE* output) {
2053
+ SECItem *sn;
2054
+ unsigned int i;
2055
+
2056
+ xmlSecAssert(cert != NULL);
2057
+ xmlSecAssert(output != NULL);
2058
+
2059
+ fprintf(output, "==== Subject Name: %s\n", cert->subjectName);
2060
+ fprintf(output, "==== Issuer Name: %s\n", cert->issuerName);
2061
+ sn = &cert->serialNumber;
2062
+
2063
+ for (i = 0; i < sn->len; i++) {
2064
+ if (i != sn->len - 1) {
2065
+ fprintf(output, "%02x:", sn->data[i]);
2066
+ } else {
2067
+ fprintf(output, "%02x", sn->data[i]);
2068
+ }
2069
+ }
2070
+ fprintf(output, "\n");
2071
+ }
2072
+
2073
+
2074
+ static void
2075
+ xmlSecNssX509CertDebugXmlDump(CERTCertificate* cert, FILE* output) {
2076
+ SECItem *sn;
2077
+ unsigned int i;
2078
+
2079
+ xmlSecAssert(cert != NULL);
2080
+ xmlSecAssert(output != NULL);
2081
+
2082
+ fprintf(output, "<SubjectName>");
2083
+ xmlSecPrintXmlString(output, BAD_CAST cert->subjectName);
2084
+ fprintf(output, "</SubjectName>\n");
2085
+
2086
+ fprintf(output, "<IssuerName>");
2087
+ xmlSecPrintXmlString(output, BAD_CAST cert->issuerName);
2088
+ fprintf(output, "</IssuerName>\n");
2089
+
2090
+ fprintf(output, "<SerialNumber>");
2091
+ sn = &cert->serialNumber;
2092
+ for (i = 0; i < sn->len; i++) {
2093
+ if (i != sn->len - 1) {
2094
+ fprintf(output, "%02x:", sn->data[i]);
2095
+ } else {
2096
+ fprintf(output, "%02x", sn->data[i]);
2097
+ }
2098
+ }
2099
+ fprintf(output, "</SerialNumber>\n");
2100
+ }
2101
+
2102
+
2103
+ /**************************************************************************
2104
+ *
2105
+ * Raw X509 Certificate processing
2106
+ *
2107
+ *
2108
+ *************************************************************************/
2109
+ static int xmlSecNssKeyDataRawX509CertBinRead (xmlSecKeyDataId id,
2110
+ xmlSecKeyPtr key,
2111
+ const xmlSecByte* buf,
2112
+ xmlSecSize bufSize,
2113
+ xmlSecKeyInfoCtxPtr keyInfoCtx);
2114
+
2115
+ static xmlSecKeyDataKlass xmlSecNssKeyDataRawX509CertKlass = {
2116
+ sizeof(xmlSecKeyDataKlass),
2117
+ sizeof(xmlSecKeyData),
2118
+
2119
+ /* data */
2120
+ xmlSecNameRawX509Cert,
2121
+ xmlSecKeyDataUsageRetrievalMethodNodeBin,
2122
+ /* xmlSecKeyDataUsage usage; */
2123
+ xmlSecHrefRawX509Cert, /* const xmlChar* href; */
2124
+ NULL, /* const xmlChar* dataNodeName; */
2125
+ xmlSecDSigNs, /* const xmlChar* dataNodeNs; */
2126
+
2127
+ /* constructors/destructor */
2128
+ NULL, /* xmlSecKeyDataInitializeMethod initialize; */
2129
+ NULL, /* xmlSecKeyDataDuplicateMethod duplicate; */
2130
+ NULL, /* xmlSecKeyDataFinalizeMethod finalize; */
2131
+ NULL, /* xmlSecKeyDataGenerateMethod generate; */
2132
+
2133
+ /* get info */
2134
+ NULL, /* xmlSecKeyDataGetTypeMethod getType; */
2135
+ NULL, /* xmlSecKeyDataGetSizeMethod getSize; */
2136
+ NULL, /* xmlSecKeyDataGetIdentifier getIdentifier; */
2137
+
2138
+ /* read/write */
2139
+ NULL, /* xmlSecKeyDataXmlReadMethod xmlRead; */
2140
+ NULL, /* xmlSecKeyDataXmlWriteMethod xmlWrite; */
2141
+ xmlSecNssKeyDataRawX509CertBinRead, /* xmlSecKeyDataBinReadMethod binRead; */
2142
+ NULL, /* xmlSecKeyDataBinWriteMethod binWrite; */
2143
+
2144
+ /* debug */
2145
+ NULL, /* xmlSecKeyDataDebugDumpMethod debugDump; */
2146
+ NULL, /* xmlSecKeyDataDebugDumpMethod debugXmlDump; */
2147
+
2148
+ /* reserved for the future */
2149
+ NULL, /* void* reserved0; */
2150
+ NULL, /* void* reserved1; */
2151
+ };
2152
+
2153
+ /**
2154
+ * xmlSecNssKeyDataRawX509CertGetKlass:
2155
+ *
2156
+ * The raw X509 certificates key data klass.
2157
+ *
2158
+ * Returns: raw X509 certificates key data klass.
2159
+ */
2160
+ xmlSecKeyDataId
2161
+ xmlSecNssKeyDataRawX509CertGetKlass(void) {
2162
+ return(&xmlSecNssKeyDataRawX509CertKlass);
2163
+ }
2164
+
2165
+ static int
2166
+ xmlSecNssKeyDataRawX509CertBinRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
2167
+ const xmlSecByte* buf, xmlSecSize bufSize,
2168
+ xmlSecKeyInfoCtxPtr keyInfoCtx) {
2169
+ xmlSecKeyDataPtr data;
2170
+ CERTCertificate* cert;
2171
+ int ret;
2172
+
2173
+ xmlSecAssert2(id == xmlSecNssKeyDataRawX509CertId, -1);
2174
+ xmlSecAssert2(key != NULL, -1);
2175
+ xmlSecAssert2(buf != NULL, -1);
2176
+ xmlSecAssert2(bufSize > 0, -1);
2177
+ xmlSecAssert2(keyInfoCtx != NULL, -1);
2178
+
2179
+ cert = xmlSecNssX509CertDerRead(buf, bufSize);
2180
+ if(cert == NULL) {
2181
+ xmlSecError(XMLSEC_ERRORS_HERE,
2182
+ NULL,
2183
+ "xmlSecNssX509CertDerRead",
2184
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
2185
+ XMLSEC_ERRORS_NO_MESSAGE);
2186
+ return(-1);
2187
+ }
2188
+
2189
+ data = xmlSecKeyEnsureData(key, xmlSecNssKeyDataX509Id);
2190
+ if(data == NULL) {
2191
+ xmlSecError(XMLSEC_ERRORS_HERE,
2192
+ xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
2193
+ "xmlSecKeyEnsureData",
2194
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
2195
+ XMLSEC_ERRORS_NO_MESSAGE);
2196
+ CERT_DestroyCertificate(cert);
2197
+ return(-1);
2198
+ }
2199
+
2200
+ ret = xmlSecNssKeyDataX509AdoptCert(data, cert);
2201
+ if(ret < 0) {
2202
+ xmlSecError(XMLSEC_ERRORS_HERE,
2203
+ xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
2204
+ "xmlSecNssKeyDataX509AdoptCert",
2205
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
2206
+ XMLSEC_ERRORS_NO_MESSAGE);
2207
+ CERT_DestroyCertificate(cert);
2208
+ return(-1);
2209
+ }
2210
+
2211
+ ret = xmlSecNssKeyDataX509VerifyAndExtractKey(data, key, keyInfoCtx);
2212
+ if(ret < 0) {
2213
+ xmlSecError(XMLSEC_ERRORS_HERE,
2214
+ xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
2215
+ "xmlSecNssKeyDataX509VerifyAndExtractKey",
2216
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
2217
+ XMLSEC_ERRORS_NO_MESSAGE);
2218
+ return(-1);
2219
+ }
2220
+ return(0);
2221
+ }
2222
+
2223
+ #endif /* XMLSEC_NO_X509 */