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,2902 @@
1
+ /**
2
+ * XML Security Library (http://www.aleksey.com/xmlsec).
3
+ *
4
+ * The Transforms Element (http://www.w3.org/TR/xmldsig-core/#sec-Transforms)
5
+ *
6
+ * The optional Transforms element contains an ordered list of Transform
7
+ * elements; these describe how the signer obtained the data object that
8
+ * was digested.
9
+ *
10
+ * Schema Definition:
11
+ *
12
+ * <element name="Transforms" type="ds:TransformsType"/>
13
+ * <complexType name="TransformsType">
14
+ * <sequence>
15
+ * <element ref="ds:Transform" maxOccurs="unbounded"/>
16
+ * </sequence>
17
+ * </complexType>
18
+ *
19
+ * <element name="Transform" type="ds:TransformType"/>
20
+ * <complexType name="TransformType" mixed="true">
21
+ * <choice minOccurs="0" maxOccurs="unbounded">
22
+ * <any namespace="##other" processContents="lax"/>
23
+ * <!-- (1,1) elements from (0,unbounded) namespaces -->
24
+ * <element name="XPath" type="string"/>
25
+ * </choice>
26
+ * <attribute name="Algorithm" type="anyURI" use="required"/>
27
+ * </complexType>
28
+ *
29
+ * DTD:
30
+ *
31
+ * <!ELEMENT Transforms (Transform+)>
32
+ * <!ELEMENT Transform (#PCDATA|XPath %Transform.ANY;)* >
33
+ * <!ATTLIST Transform Algorithm CDATA #REQUIRED >
34
+ * <!ELEMENT XPath (#PCDATA) >
35
+ *
36
+ * This is free software; see Copyright file in the source
37
+ * distribution for preciese wording.
38
+ *
39
+ * Copyright (C) 2002-2003 Aleksey Sanin <aleksey@aleksey.com>
40
+ */
41
+
42
+ #include "globals.h"
43
+ #include <stdlib.h>
44
+ #include <stdio.h>
45
+ #include <string.h>
46
+
47
+ #include <libxml/tree.h>
48
+ #include <libxml/xpath.h>
49
+ #include <libxml/xpointer.h>
50
+
51
+ #include <xmlsec/xmlsec.h>
52
+ #include <xmlsec/buffer.h>
53
+ #include <xmlsec/xmltree.h>
54
+ #include <xmlsec/keysdata.h>
55
+ #include <xmlsec/keys.h>
56
+ #include <xmlsec/keyinfo.h>
57
+ #include <xmlsec/transforms.h>
58
+ #include <xmlsec/base64.h>
59
+ #include <xmlsec/io.h>
60
+ #include <xmlsec/membuf.h>
61
+ #include <xmlsec/parser.h>
62
+ #include <xmlsec/errors.h>
63
+
64
+ #include <xmlsec/private/xslt.h>
65
+
66
+ /**************************************************************************
67
+ *
68
+ * Global xmlSecTransformIds list functions
69
+ *
70
+ *************************************************************************/
71
+ static xmlSecPtrList xmlSecAllTransformIds;
72
+
73
+
74
+ /**
75
+ * xmlSecTransformIdsGet:
76
+ *
77
+ * Gets global registered transform klasses list.
78
+ *
79
+ * Returns: the pointer to list of all registered transform klasses.
80
+ */
81
+ xmlSecPtrListPtr
82
+ xmlSecTransformIdsGet(void) {
83
+ return(&xmlSecAllTransformIds);
84
+ }
85
+
86
+ /**
87
+ * xmlSecTransformIdsInit:
88
+ *
89
+ * Initializes the transform klasses. This function is called from the
90
+ * #xmlSecInit function and the application should not call it directly.
91
+ *
92
+ * Returns: 0 on success or a negative value if an error occurs.
93
+ */
94
+ int
95
+ xmlSecTransformIdsInit(void) {
96
+ int ret;
97
+
98
+ ret = xmlSecPtrListInitialize(xmlSecTransformIdsGet(), xmlSecTransformIdListId);
99
+ if(ret < 0) {
100
+ xmlSecError(XMLSEC_ERRORS_HERE,
101
+ NULL,
102
+ "xmlSecPtrListPtrInitialize",
103
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
104
+ "xmlSecTransformIdListId");
105
+ return(-1);
106
+ }
107
+
108
+ ret = xmlSecTransformIdsRegisterDefault();
109
+ if(ret < 0) {
110
+ xmlSecError(XMLSEC_ERRORS_HERE,
111
+ NULL,
112
+ "xmlSecTransformIdsRegisterDefault",
113
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
114
+ XMLSEC_ERRORS_NO_MESSAGE);
115
+ return(-1);
116
+ }
117
+
118
+ #ifndef XMLSEC_NO_XSLT
119
+ xmlSecTransformXsltInitialize();
120
+ #endif /* XMLSEC_NO_XSLT */
121
+
122
+ return(0);
123
+ }
124
+
125
+ /**
126
+ * xmlSecTransformIdsShutdown:
127
+ *
128
+ * Shuts down the keys data klasses. This function is called from the
129
+ * #xmlSecShutdown function and the application should not call it directly.
130
+ */
131
+ void
132
+ xmlSecTransformIdsShutdown(void) {
133
+ #ifndef XMLSEC_NO_XSLT
134
+ xmlSecTransformXsltShutdown();
135
+ #endif /* XMLSEC_NO_XSLT */
136
+
137
+ xmlSecPtrListFinalize(xmlSecTransformIdsGet());
138
+ }
139
+
140
+ /**
141
+ * xmlSecTransformIdsRegister:
142
+ * @id: the transform klass.
143
+ *
144
+ * Registers @id in the global list of transform klasses.
145
+ *
146
+ * Returns: 0 on success or a negative value if an error occurs.
147
+ */
148
+ int
149
+ xmlSecTransformIdsRegister(xmlSecTransformId id) {
150
+ int ret;
151
+
152
+ xmlSecAssert2(id != xmlSecTransformIdUnknown, -1);
153
+
154
+ ret = xmlSecPtrListAdd(xmlSecTransformIdsGet(), (xmlSecPtr)id);
155
+ if(ret < 0) {
156
+ xmlSecError(XMLSEC_ERRORS_HERE,
157
+ NULL,
158
+ "xmlSecPtrListAdd",
159
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
160
+ "transform=%s",
161
+ xmlSecErrorsSafeString(xmlSecTransformKlassGetName(id)));
162
+ return(-1);
163
+ }
164
+
165
+ return(0);
166
+ }
167
+
168
+ /**
169
+ * xmlSecTransformIdsRegisterDefault:
170
+ *
171
+ * Registers default (implemented by XML Security Library)
172
+ * transform klasses: XPath transform, Base64 transform, ...
173
+ *
174
+ * Returns: 0 on success or a negative value if an error occurs.
175
+ */
176
+ int
177
+ xmlSecTransformIdsRegisterDefault(void) {
178
+ if(xmlSecTransformIdsRegister(xmlSecTransformBase64Id) < 0) {
179
+ xmlSecError(XMLSEC_ERRORS_HERE,
180
+ NULL,
181
+ "xmlSecTransformIdsRegister",
182
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
183
+ "name=%s",
184
+ xmlSecErrorsSafeString(xmlSecTransformKlassGetName(xmlSecTransformBase64Id)));
185
+ return(-1);
186
+ }
187
+
188
+ if(xmlSecTransformIdsRegister(xmlSecTransformEnvelopedId) < 0) {
189
+ xmlSecError(XMLSEC_ERRORS_HERE,
190
+ NULL,
191
+ "xmlSecTransformIdsRegister",
192
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
193
+ "name=%s",
194
+ xmlSecErrorsSafeString(xmlSecTransformKlassGetName(xmlSecTransformEnvelopedId)));
195
+ return(-1);
196
+ }
197
+
198
+ /* c14n methods */
199
+ if(xmlSecTransformIdsRegister(xmlSecTransformInclC14NId) < 0) {
200
+ xmlSecError(XMLSEC_ERRORS_HERE,
201
+ NULL,
202
+ "xmlSecTransformIdsRegister",
203
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
204
+ "name=%s",
205
+ xmlSecErrorsSafeString(xmlSecTransformKlassGetName(xmlSecTransformInclC14NId)));
206
+ return(-1);
207
+ }
208
+ if(xmlSecTransformIdsRegister(xmlSecTransformInclC14NWithCommentsId) < 0) {
209
+ xmlSecError(XMLSEC_ERRORS_HERE,
210
+ NULL,
211
+ "xmlSecTransformIdsRegister",
212
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
213
+ "name=%s",
214
+ xmlSecErrorsSafeString(xmlSecTransformKlassGetName(xmlSecTransformInclC14NWithCommentsId)));
215
+ return(-1);
216
+ }
217
+ if(xmlSecTransformIdsRegister(xmlSecTransformInclC14N11Id) < 0) {
218
+ xmlSecError(XMLSEC_ERRORS_HERE,
219
+ NULL,
220
+ "xmlSecTransformIdsRegister",
221
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
222
+ "name=%s",
223
+ xmlSecErrorsSafeString(xmlSecTransformKlassGetName(xmlSecTransformInclC14N11Id)));
224
+ return(-1);
225
+ }
226
+ if(xmlSecTransformIdsRegister(xmlSecTransformInclC14N11WithCommentsId) < 0) {
227
+ xmlSecError(XMLSEC_ERRORS_HERE,
228
+ NULL,
229
+ "xmlSecTransformIdsRegister",
230
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
231
+ "name=%s",
232
+ xmlSecErrorsSafeString(xmlSecTransformKlassGetName(xmlSecTransformInclC14N11WithCommentsId)));
233
+ return(-1);
234
+ }
235
+ if(xmlSecTransformIdsRegister(xmlSecTransformExclC14NId) < 0) {
236
+ xmlSecError(XMLSEC_ERRORS_HERE,
237
+ NULL,
238
+ "xmlSecTransformIdsRegister",
239
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
240
+ "name=%s",
241
+ xmlSecErrorsSafeString(xmlSecTransformKlassGetName(xmlSecTransformExclC14NId)));
242
+ return(-1);
243
+ }
244
+ if(xmlSecTransformIdsRegister(xmlSecTransformExclC14NWithCommentsId) < 0) {
245
+ xmlSecError(XMLSEC_ERRORS_HERE,
246
+ NULL,
247
+ "xmlSecTransformIdsRegister",
248
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
249
+ "name=%s",
250
+ xmlSecErrorsSafeString(xmlSecTransformKlassGetName(xmlSecTransformExclC14NWithCommentsId)));
251
+ return(-1);
252
+ }
253
+
254
+ if(xmlSecTransformIdsRegister(xmlSecTransformXPathId) < 0) {
255
+ xmlSecError(XMLSEC_ERRORS_HERE,
256
+ NULL,
257
+ "xmlSecTransformIdsRegister",
258
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
259
+ "name=%s",
260
+ xmlSecErrorsSafeString(xmlSecTransformKlassGetName(xmlSecTransformXPathId)));
261
+ return(-1);
262
+ }
263
+
264
+ if(xmlSecTransformIdsRegister(xmlSecTransformXPath2Id) < 0) {
265
+ xmlSecError(XMLSEC_ERRORS_HERE,
266
+ NULL,
267
+ "xmlSecTransformIdsRegister",
268
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
269
+ "name=%s",
270
+ xmlSecErrorsSafeString(xmlSecTransformKlassGetName(xmlSecTransformXPath2Id)));
271
+ return(-1);
272
+ }
273
+
274
+ if(xmlSecTransformIdsRegister(xmlSecTransformXPointerId) < 0) {
275
+ xmlSecError(XMLSEC_ERRORS_HERE,
276
+ NULL,
277
+ "xmlSecTransformIdsRegister",
278
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
279
+ "name=%s",
280
+ xmlSecErrorsSafeString(xmlSecTransformKlassGetName(xmlSecTransformXPointerId)));
281
+ return(-1);
282
+ }
283
+
284
+ #ifndef XMLSEC_NO_XSLT
285
+ if(xmlSecTransformIdsRegister(xmlSecTransformXsltId) < 0) {
286
+ xmlSecError(XMLSEC_ERRORS_HERE,
287
+ NULL,
288
+ "xmlSecTransformIdsRegister",
289
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
290
+ "name=%s",
291
+ xmlSecErrorsSafeString(xmlSecTransformKlassGetName(xmlSecTransformXsltId)));
292
+ return(-1);
293
+ }
294
+ #endif /* XMLSEC_NO_XSLT */
295
+
296
+ return(0);
297
+ }
298
+
299
+ /**************************************************************************
300
+ *
301
+ * utils
302
+ *
303
+ *************************************************************************/
304
+ /**
305
+ * xmlSecTransformUriTypeCheck:
306
+ * @type: the expected URI type.
307
+ * @uri: the uri for checking.
308
+ *
309
+ * Checks if @uri matches expected type @type.
310
+ *
311
+ * Returns: 1 if @uri matches @type, 0 if not or a negative value
312
+ * if an error occurs.
313
+ */
314
+ int
315
+ xmlSecTransformUriTypeCheck(xmlSecTransformUriType type, const xmlChar* uri) {
316
+ xmlSecTransformUriType uriType = 0;
317
+
318
+ if((uri == NULL) || (xmlStrlen(uri) == 0)) {
319
+ uriType = xmlSecTransformUriTypeEmpty;
320
+ } else if(uri[0] == '#') {
321
+ uriType = xmlSecTransformUriTypeSameDocument;
322
+ } else if(xmlStrncmp(uri, BAD_CAST "file://", 7) == 0) {
323
+ uriType = xmlSecTransformUriTypeLocal;
324
+ } else {
325
+ uriType = xmlSecTransformUriTypeRemote;
326
+ }
327
+ return(((uriType & type) != 0) ? 1 : 0);
328
+ }
329
+
330
+ /**************************************************************************
331
+ *
332
+ * xmlSecTransformCtx
333
+ *
334
+ *************************************************************************/
335
+
336
+ /**
337
+ * xmlSecTransformCtxCreate:
338
+ *
339
+ * Creates transforms chain processing context.
340
+ * The caller is responsible for destroying returned object by calling
341
+ * #xmlSecTransformCtxDestroy function.
342
+ *
343
+ * Returns: pointer to newly allocated context object or NULL if an error
344
+ * occurs.
345
+ */
346
+ xmlSecTransformCtxPtr
347
+ xmlSecTransformCtxCreate(void) {
348
+ xmlSecTransformCtxPtr ctx;
349
+ int ret;
350
+
351
+ /* Allocate a new xmlSecTransform and fill the fields. */
352
+ ctx = (xmlSecTransformCtxPtr)xmlMalloc(sizeof(xmlSecTransformCtx));
353
+ if(ctx == NULL) {
354
+ xmlSecError(XMLSEC_ERRORS_HERE,
355
+ NULL,
356
+ NULL,
357
+ XMLSEC_ERRORS_R_MALLOC_FAILED,
358
+ "size=%d", sizeof(xmlSecTransformCtx));
359
+ return(NULL);
360
+ }
361
+
362
+ ret = xmlSecTransformCtxInitialize(ctx);
363
+ if(ret < 0) {
364
+ xmlSecError(XMLSEC_ERRORS_HERE,
365
+ NULL,
366
+ "xmlSecTransformCtxInitialize",
367
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
368
+ XMLSEC_ERRORS_NO_MESSAGE);
369
+ xmlSecTransformCtxDestroy(ctx);
370
+ return(NULL);
371
+ }
372
+
373
+ return(ctx);
374
+ }
375
+
376
+ /**
377
+ * xmlSecTransformCtxDestroy:
378
+ * @ctx: the pointer to transforms chain processing context.
379
+ *
380
+ * Destroy context object created with #xmlSecTransformCtxCreate function.
381
+ */
382
+ void
383
+ xmlSecTransformCtxDestroy(xmlSecTransformCtxPtr ctx) {
384
+ xmlSecAssert(ctx != NULL);
385
+
386
+ xmlSecTransformCtxFinalize(ctx);
387
+ xmlFree(ctx);
388
+ }
389
+
390
+ /**
391
+ * xmlSecTransformCtxInitialize:
392
+ * @ctx: the pointer to transforms chain processing context.
393
+ *
394
+ * Initializes transforms chain processing context.
395
+ * The caller is responsible for cleaning up returned object by calling
396
+ * #xmlSecTransformCtxFinalize function.
397
+ *
398
+ * Returns: 0 on success or a negative value if an error occurs.
399
+ */
400
+ int
401
+ xmlSecTransformCtxInitialize(xmlSecTransformCtxPtr ctx) {
402
+ int ret;
403
+
404
+ xmlSecAssert2(ctx != NULL, -1);
405
+
406
+ memset(ctx, 0, sizeof(xmlSecTransformCtx));
407
+
408
+ ret = xmlSecPtrListInitialize(&(ctx->enabledTransforms), xmlSecTransformIdListId);
409
+ if(ret < 0) {
410
+ xmlSecError(XMLSEC_ERRORS_HERE,
411
+ NULL,
412
+ "xmlSecPtrListInitialize",
413
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
414
+ XMLSEC_ERRORS_NO_MESSAGE);
415
+ return(-1);
416
+ }
417
+
418
+ ctx->enabledUris = xmlSecTransformUriTypeAny;
419
+ return(0);
420
+ }
421
+
422
+ /**
423
+ * xmlSecTransformCtxFinalize:
424
+ * @ctx: the pointer to transforms chain processing context.
425
+ *
426
+ * Cleans up @ctx object initialized with #xmlSecTransformCtxInitialize function.
427
+ */
428
+ void
429
+ xmlSecTransformCtxFinalize(xmlSecTransformCtxPtr ctx) {
430
+ xmlSecAssert(ctx != NULL);
431
+
432
+ xmlSecTransformCtxReset(ctx);
433
+ xmlSecPtrListFinalize(&(ctx->enabledTransforms));
434
+ memset(ctx, 0, sizeof(xmlSecTransformCtx));
435
+ }
436
+
437
+ /**
438
+ * xmlSecTransformCtxReset:
439
+ * @ctx: the pointer to transforms chain processing context.
440
+ *
441
+ * Resets transfroms context for new processing.
442
+ */
443
+ void
444
+ xmlSecTransformCtxReset(xmlSecTransformCtxPtr ctx) {
445
+ xmlSecTransformPtr transform, tmp;
446
+
447
+ xmlSecAssert(ctx != NULL);
448
+
449
+ ctx->result = NULL;
450
+ ctx->status = xmlSecTransformStatusNone;
451
+
452
+ /* destroy uri */
453
+ if(ctx->uri != NULL) {
454
+ xmlFree(ctx->uri);
455
+ ctx->uri = NULL;
456
+ }
457
+ if(ctx->xptrExpr != NULL) {
458
+ xmlFree(ctx->xptrExpr);
459
+ ctx->xptrExpr = NULL;
460
+ }
461
+
462
+ /* destroy transforms chain */
463
+ for(transform = ctx->first; transform != NULL; transform = tmp) {
464
+ tmp = transform->next;
465
+ xmlSecTransformDestroy(transform);
466
+ }
467
+ ctx->first = ctx->last = NULL;
468
+ }
469
+
470
+ /**
471
+ * xmlSecTransformCtxCopyUserPref:
472
+ * @dst: the pointer to destination transforms chain processing context.
473
+ * @src: the pointer to source transforms chain processing context.
474
+ *
475
+ * Copies user settings from @src context to @dst.
476
+ *
477
+ * Returns: 0 on success or a negative value otherwise.
478
+ */
479
+ int
480
+ xmlSecTransformCtxCopyUserPref(xmlSecTransformCtxPtr dst, xmlSecTransformCtxPtr src) {
481
+ int ret;
482
+
483
+ xmlSecAssert2(dst != NULL, -1);
484
+ xmlSecAssert2(src != NULL, -1);
485
+
486
+ dst->userData = src->userData;
487
+ dst->flags = src->flags;
488
+ dst->flags2 = src->flags2;
489
+ dst->enabledUris = src->enabledUris;
490
+ dst->preExecCallback = src->preExecCallback;
491
+
492
+ ret = xmlSecPtrListCopy(&(dst->enabledTransforms), &(src->enabledTransforms));
493
+ if(ret < 0) {
494
+ xmlSecError(XMLSEC_ERRORS_HERE,
495
+ NULL,
496
+ "xmlSecPtrListCopy",
497
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
498
+ XMLSEC_ERRORS_NO_MESSAGE);
499
+ return(-1);
500
+ }
501
+
502
+ return(0);
503
+ }
504
+
505
+ /**
506
+ * xmlSecTransformCtxAppend:
507
+ * @ctx: the pointer to transforms chain processing context.
508
+ * @transform: the pointer to new transform.
509
+ *
510
+ * Connects the @transform to the end of the chain of transforms in the @ctx
511
+ * (see #xmlSecTransformConnect function for details).
512
+ *
513
+ * Returns: 0 on success or a negative value otherwise.
514
+ */
515
+ int
516
+ xmlSecTransformCtxAppend(xmlSecTransformCtxPtr ctx, xmlSecTransformPtr transform) {
517
+ int ret;
518
+
519
+ xmlSecAssert2(ctx != NULL, -1);
520
+ xmlSecAssert2(ctx->status == xmlSecTransformStatusNone, -1);
521
+ xmlSecAssert2(xmlSecTransformIsValid(transform), -1);
522
+
523
+ if(ctx->last != NULL) {
524
+ ret = xmlSecTransformConnect(ctx->last, transform, ctx);
525
+ if(ret < 0) {
526
+ xmlSecError(XMLSEC_ERRORS_HERE,
527
+ NULL,
528
+ "xmlSecTransformConnect",
529
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
530
+ "name=%s",
531
+ xmlSecErrorsSafeString(xmlSecTransformGetName(transform)));
532
+ return(-1);
533
+ }
534
+ } else {
535
+ xmlSecAssert2(ctx->first == NULL, -1);
536
+ ctx->first = transform;
537
+ }
538
+ ctx->last = transform;
539
+
540
+ return(0);
541
+ }
542
+
543
+ /**
544
+ * xmlSecTransformCtxPrepend:
545
+ * @ctx: the pointer to transforms chain processing context.
546
+ * @transform: the pointer to new transform.
547
+ *
548
+ * Connects the @transform to the beggining of the chain of transforms in the @ctx
549
+ * (see #xmlSecTransformConnect function for details).
550
+ *
551
+ * Returns: 0 on success or a negative value otherwise.
552
+ */
553
+ int
554
+ xmlSecTransformCtxPrepend(xmlSecTransformCtxPtr ctx, xmlSecTransformPtr transform) {
555
+ int ret;
556
+
557
+ xmlSecAssert2(ctx != NULL, -1);
558
+ xmlSecAssert2(ctx->status == xmlSecTransformStatusNone, -1);
559
+ xmlSecAssert2(xmlSecTransformIsValid(transform), -1);
560
+
561
+ if(ctx->first != NULL) {
562
+ ret = xmlSecTransformConnect(transform, ctx->first, ctx);
563
+ if(ret < 0) {
564
+ xmlSecError(XMLSEC_ERRORS_HERE,
565
+ NULL,
566
+ "xmlSecTransformConnect",
567
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
568
+ "name=%s",
569
+ xmlSecErrorsSafeString(xmlSecTransformGetName(transform)));
570
+ return(-1);
571
+ }
572
+ } else {
573
+ xmlSecAssert2(ctx->last == NULL, -1);
574
+ ctx->last = transform;
575
+ }
576
+ ctx->first = transform;
577
+
578
+ return(0);
579
+ }
580
+
581
+ /**
582
+ * xmlSecTransformCtxCreateAndAppend:
583
+ * @ctx: the pointer to transforms chain processing context.
584
+ * @id: the new transform klass.
585
+ *
586
+ * Creaeates new transform and connects it to the end of the chain of
587
+ * transforms in the @ctx (see #xmlSecTransformConnect function for details).
588
+ *
589
+ * Returns: pointer to newly created transform or NULL if an error occurs.
590
+ */
591
+ xmlSecTransformPtr
592
+ xmlSecTransformCtxCreateAndAppend(xmlSecTransformCtxPtr ctx, xmlSecTransformId id) {
593
+ xmlSecTransformPtr transform;
594
+ int ret;
595
+
596
+ xmlSecAssert2(ctx != NULL, NULL);
597
+ xmlSecAssert2(ctx->status == xmlSecTransformStatusNone, NULL);
598
+ xmlSecAssert2(id != xmlSecTransformIdUnknown, NULL);
599
+
600
+ transform = xmlSecTransformCreate(id);
601
+ if(!xmlSecTransformIsValid(transform)) {
602
+ xmlSecError(XMLSEC_ERRORS_HERE,
603
+ NULL,
604
+ "xmlSecTransformCreate",
605
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
606
+ "transform=%s",
607
+ xmlSecErrorsSafeString(xmlSecTransformKlassGetName(id)));
608
+ return(NULL);
609
+ }
610
+
611
+ ret = xmlSecTransformCtxAppend(ctx, transform);
612
+ if(ret < 0) {
613
+ xmlSecError(XMLSEC_ERRORS_HERE,
614
+ NULL,
615
+ "xmlSecTransformCtxAppend",
616
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
617
+ "name=%s",
618
+ xmlSecErrorsSafeString(xmlSecTransformGetName(transform)));
619
+ xmlSecTransformDestroy(transform);
620
+ return(NULL);
621
+ }
622
+
623
+ return(transform);
624
+ }
625
+
626
+ /**
627
+ * xmlSecTransformCtxCreateAndPrepend:
628
+ * @ctx: the pointer to transforms chain processing context.
629
+ * @id: the new transform klass.
630
+ *
631
+ * Creaeates new transform and connects it to the end of the chain of
632
+ * transforms in the @ctx (see #xmlSecTransformConnect function for details).
633
+ *
634
+ * Returns: pointer to newly created transform or NULL if an error occurs.
635
+ */
636
+ xmlSecTransformPtr
637
+ xmlSecTransformCtxCreateAndPrepend(xmlSecTransformCtxPtr ctx, xmlSecTransformId id) {
638
+ xmlSecTransformPtr transform;
639
+ int ret;
640
+
641
+ xmlSecAssert2(ctx != NULL, NULL);
642
+ xmlSecAssert2(ctx->status == xmlSecTransformStatusNone, NULL);
643
+ xmlSecAssert2(id != xmlSecTransformIdUnknown, NULL);
644
+
645
+ transform = xmlSecTransformCreate(id);
646
+ if(!xmlSecTransformIsValid(transform)) {
647
+ xmlSecError(XMLSEC_ERRORS_HERE,
648
+ NULL,
649
+ "xmlSecTransformCreate",
650
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
651
+ "transform=%s",
652
+ xmlSecErrorsSafeString(xmlSecTransformKlassGetName(id)));
653
+ return(NULL);
654
+ }
655
+
656
+ ret = xmlSecTransformCtxPrepend(ctx, transform);
657
+ if(ret < 0) {
658
+ xmlSecError(XMLSEC_ERRORS_HERE,
659
+ NULL,
660
+ "xmlSecTransformCtxPrepend",
661
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
662
+ "name=%s",
663
+ xmlSecErrorsSafeString(xmlSecTransformGetName(transform)));
664
+ xmlSecTransformDestroy(transform);
665
+ return(NULL);
666
+ }
667
+
668
+ return(transform);
669
+ }
670
+
671
+ /**
672
+ * xmlSecTransformCtxNodeRead:
673
+ * @ctx: the pointer to transforms chain processing context.
674
+ * @node: the pointer to transform's node.
675
+ * @usage: the transform's usage (signature, encryption, etc.).
676
+ *
677
+ * Reads the transform from the @node and appends it to the current chain
678
+ * of transforms in @ctx.
679
+ *
680
+ * Returns: pointer to newly created transform or NULL if an error occurs.
681
+ */
682
+ xmlSecTransformPtr
683
+ xmlSecTransformCtxNodeRead(xmlSecTransformCtxPtr ctx, xmlNodePtr node,
684
+ xmlSecTransformUsage usage) {
685
+ xmlSecTransformPtr transform;
686
+ int ret;
687
+
688
+ xmlSecAssert2(ctx != NULL, NULL);
689
+ xmlSecAssert2(ctx->status == xmlSecTransformStatusNone, NULL);
690
+ xmlSecAssert2(node != NULL, NULL);
691
+
692
+ transform = xmlSecTransformNodeRead(node, usage, ctx);
693
+ if(transform == NULL) {
694
+ xmlSecError(XMLSEC_ERRORS_HERE,
695
+ NULL,
696
+ "xmlSecTransformNodeRead",
697
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
698
+ "name=%s",
699
+ xmlSecErrorsSafeString(xmlSecNodeGetName(node)));
700
+ return(NULL);
701
+ }
702
+
703
+ ret = xmlSecTransformCtxAppend(ctx, transform);
704
+ if(ret < 0) {
705
+ xmlSecError(XMLSEC_ERRORS_HERE,
706
+ NULL,
707
+ "xmlSecTransformCtxAppend",
708
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
709
+ "name=%s",
710
+ xmlSecErrorsSafeString(xmlSecTransformGetName(transform)));
711
+ xmlSecTransformDestroy(transform);
712
+ return(NULL);
713
+ }
714
+
715
+ return(transform);
716
+ }
717
+
718
+ /**
719
+ * xmlSecTransformCtxNodesListRead:
720
+ * @ctx: the pointer to transforms chain processing context.
721
+ * @node: the pointer to <dsig:Transform/> nodes parent node.
722
+ * @usage: the transform's usage (signature, encryption, etc.).
723
+ *
724
+ * Reads transforms from the <dsig:Transform/> children of the @node and
725
+ * appends them to the current transforms chain in @ctx object.
726
+ *
727
+ * Returns: 0 on success or a negative value otherwise.
728
+ */
729
+ int
730
+ xmlSecTransformCtxNodesListRead(xmlSecTransformCtxPtr ctx, xmlNodePtr node, xmlSecTransformUsage usage) {
731
+ xmlSecTransformPtr transform;
732
+ xmlNodePtr cur;
733
+ int ret;
734
+
735
+ xmlSecAssert2(ctx != NULL, -1);
736
+ xmlSecAssert2(ctx->status == xmlSecTransformStatusNone, -1);
737
+ xmlSecAssert2(node != NULL, -1);
738
+
739
+ cur = xmlSecGetNextElementNode(node->children);
740
+ while((cur != NULL) && xmlSecCheckNodeName(cur, xmlSecNodeTransform, xmlSecDSigNs)) {
741
+ transform = xmlSecTransformNodeRead(cur, usage, ctx);
742
+ if(transform == NULL) {
743
+ xmlSecError(XMLSEC_ERRORS_HERE,
744
+ NULL,
745
+ "xmlSecTransformNodeRead",
746
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
747
+ "node=%s",
748
+ xmlSecErrorsSafeString(xmlSecNodeGetName(cur)));
749
+ return(-1);
750
+ }
751
+
752
+ ret = xmlSecTransformCtxAppend(ctx, transform);
753
+ if(ret < 0) {
754
+ xmlSecError(XMLSEC_ERRORS_HERE,
755
+ NULL,
756
+ "xmlSecTransformCtxAppend",
757
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
758
+ "node=%s",
759
+ xmlSecErrorsSafeString(xmlSecNodeGetName(cur)));
760
+ xmlSecTransformDestroy(transform);
761
+ return(-1);
762
+ }
763
+ cur = xmlSecGetNextElementNode(cur->next);
764
+ }
765
+
766
+ if(cur != NULL) {
767
+ xmlSecError(XMLSEC_ERRORS_HERE,
768
+ NULL,
769
+ xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
770
+ XMLSEC_ERRORS_R_UNEXPECTED_NODE,
771
+ XMLSEC_ERRORS_NO_MESSAGE);
772
+ return(-1);
773
+ }
774
+ return(0);
775
+ }
776
+
777
+ /**
778
+ * xmlSecTransformCtxSetUri:
779
+ * @ctx: the pointer to transforms chain processing context.
780
+ * @uri: the URI.
781
+ * @hereNode: the pointer to "here" node required by some
782
+ * XML transforms (may be NULL).
783
+ *
784
+ * Parses uri and adds xpointer transforms if required.
785
+ *
786
+ * The following examples demonstrate what the URI attribute identifies and
787
+ * how it is dereferenced
788
+ * (http://www.w3.org/TR/xmldsig-core/#sec-ReferenceProcessingModel):
789
+ *
790
+ * - URI="http://example.com/bar.xml"
791
+ * identifies the octets that represent the external resource
792
+ * 'http://example.com/bar.xml', that is probably an XML document given
793
+ * its file extension.
794
+ *
795
+ * - URI="http://example.com/bar.xml#chapter1"
796
+ * identifies the element with ID attribute value 'chapter1' of the
797
+ * external XML resource 'http://example.com/bar.xml', provided as an
798
+ * octet stream. Again, for the sake of interoperability, the element
799
+ * identified as 'chapter1' should be obtained using an XPath transform
800
+ * rather than a URI fragment (barename XPointer resolution in external
801
+ * resources is not REQUIRED in this specification).
802
+ *
803
+ * - URI=""
804
+ * identifies the node-set (minus any comment nodes) of the XML resource
805
+ * containing the signature
806
+ *
807
+ * - URI="#chapter1"
808
+ * identifies a node-set containing the element with ID attribute value
809
+ * 'chapter1' of the XML resource containing the signature. XML Signature
810
+ * (and its applications) modify this node-set to include the element plus
811
+ * all descendents including namespaces and attributes -- but not comments.
812
+ *
813
+ * Returns: 0 on success or a negative value otherwise.
814
+ */
815
+ int
816
+ xmlSecTransformCtxSetUri(xmlSecTransformCtxPtr ctx, const xmlChar* uri, xmlNodePtr hereNode) {
817
+ xmlSecNodeSetType nodeSetType = xmlSecNodeSetTree;
818
+ const xmlChar* xptr;
819
+ xmlChar* buf = NULL;
820
+ int useVisa3DHack = 0;
821
+ int ret;
822
+
823
+ xmlSecAssert2(ctx != NULL, -1);
824
+ xmlSecAssert2(ctx->uri == NULL, -1);
825
+ xmlSecAssert2(ctx->xptrExpr == NULL, -1);
826
+ xmlSecAssert2(ctx->status == xmlSecTransformStatusNone, -1);
827
+ xmlSecAssert2(hereNode != NULL, -1);
828
+
829
+ /* check uri */
830
+ if(xmlSecTransformUriTypeCheck(ctx->enabledUris, uri) != 1) {
831
+ xmlSecError(XMLSEC_ERRORS_HERE,
832
+ NULL,
833
+ NULL,
834
+ XMLSEC_ERRORS_R_INVALID_URI_TYPE,
835
+ "uri=%s",
836
+ xmlSecErrorsSafeString(uri));
837
+ return(-1);
838
+ }
839
+
840
+ /* is it an empty uri? */
841
+ if((uri == NULL) || (xmlStrlen(uri) == 0)) {
842
+ return(0);
843
+ }
844
+
845
+ /* do we have barename or full xpointer? */
846
+ xptr = xmlStrchr(uri, '#');
847
+ if(xptr == NULL){
848
+ ctx->uri = xmlStrdup(uri);
849
+ if(ctx->uri == NULL) {
850
+ xmlSecError(XMLSEC_ERRORS_HERE,
851
+ NULL,
852
+ NULL,
853
+ XMLSEC_ERRORS_R_STRDUP_FAILED,
854
+ "size=%d", xmlStrlen(uri));
855
+ return(-1);
856
+ }
857
+ /* we are done */
858
+ return(0);
859
+ } else if(xmlStrcmp(uri, BAD_CAST "#xpointer(/)") == 0) {
860
+ ctx->xptrExpr = xmlStrdup(uri);
861
+ if(ctx->xptrExpr == NULL) {
862
+ xmlSecError(XMLSEC_ERRORS_HERE,
863
+ NULL,
864
+ NULL,
865
+ XMLSEC_ERRORS_R_STRDUP_FAILED,
866
+ "size=%d", xmlStrlen(uri));
867
+ return(-1);
868
+ }
869
+ /* we are done */
870
+ return(0);
871
+ }
872
+
873
+ ctx->uri = xmlStrndup(uri, xptr - uri);
874
+ if(ctx->uri == NULL) {
875
+ xmlSecError(XMLSEC_ERRORS_HERE,
876
+ NULL,
877
+ NULL,
878
+ XMLSEC_ERRORS_R_STRDUP_FAILED,
879
+ "size=%d", xptr - uri);
880
+ return(-1);
881
+ }
882
+
883
+ ctx->xptrExpr = xmlStrdup(xptr);
884
+ if(ctx->xptrExpr == NULL) {
885
+ xmlSecError(XMLSEC_ERRORS_HERE,
886
+ NULL,
887
+ NULL,
888
+ XMLSEC_ERRORS_R_STRDUP_FAILED,
889
+ "size=%d", xmlStrlen(xptr));
890
+ return(-1);
891
+ }
892
+
893
+ /* do we have barename or full xpointer? */
894
+ xmlSecAssert2(xptr != NULL, -1);
895
+ if((xmlStrncmp(xptr, BAD_CAST "#xpointer(", 10) == 0) || (xmlStrncmp(xptr, BAD_CAST "#xmlns(", 7) == 0)) {
896
+ ++xptr;
897
+ nodeSetType = xmlSecNodeSetTree;
898
+ } else if((ctx->flags & XMLSEC_TRANSFORMCTX_FLAGS_USE_VISA3D_HACK) != 0) {
899
+ ++xptr;
900
+ nodeSetType = xmlSecNodeSetTreeWithoutComments;
901
+ useVisa3DHack = 1;
902
+ } else {
903
+ static const char tmpl[] = "xpointer(id(\'%s\'))";
904
+ xmlSecSize size;
905
+
906
+ /* we need to add "xpointer(id('..')) because otherwise we have
907
+ * problems with numeric ("111" and so on) and other "strange" ids */
908
+ size = xmlStrlen(BAD_CAST tmpl) + xmlStrlen(xptr) + 2;
909
+ buf = (xmlChar*)xmlMalloc(size * sizeof(xmlChar));
910
+ if(buf == NULL) {
911
+ xmlSecError(XMLSEC_ERRORS_HERE,
912
+ NULL,
913
+ NULL,
914
+ XMLSEC_ERRORS_R_MALLOC_FAILED,
915
+ "size=%d", size);
916
+ return(-1);
917
+ }
918
+ sprintf((char*)buf, tmpl, xptr + 1);
919
+ xptr = buf;
920
+ nodeSetType = xmlSecNodeSetTreeWithoutComments;
921
+ }
922
+
923
+ if(useVisa3DHack == 0) {
924
+ xmlSecTransformPtr transform;
925
+
926
+ /* we need to create XPonter transform to execute expr */
927
+ transform = xmlSecTransformCtxCreateAndPrepend(ctx, xmlSecTransformXPointerId);
928
+ if(!xmlSecTransformIsValid(transform)) {
929
+ xmlSecError(XMLSEC_ERRORS_HERE,
930
+ NULL,
931
+ "xmlSecTransformCtxCreateAndPrepend",
932
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
933
+ "transform=%s",
934
+ xmlSecErrorsSafeString(xmlSecTransformKlassGetName(xmlSecTransformXPointerId)));
935
+ return(-1);
936
+ }
937
+
938
+ ret = xmlSecTransformXPointerSetExpr(transform, xptr, nodeSetType, hereNode);
939
+ if(ret < 0) {
940
+ xmlSecError(XMLSEC_ERRORS_HERE,
941
+ NULL,
942
+ "xmlSecTransformXPointerSetExpr",
943
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
944
+ "name=%s",
945
+ xmlSecErrorsSafeString(xmlSecTransformGetName(transform)));
946
+ if(buf != NULL) {
947
+ xmlFree(buf);
948
+ }
949
+ return(-1);
950
+ }
951
+ } else {
952
+ /* Visa3D protocol doesn't follow XML/XPointer/XMLDSig specs
953
+ * and allows invalid XPointer expressions (e.g. "#12345") in
954
+ * the URI attribute.
955
+ * Since we couldn't evaluate such expressions thru XPath/XPointer
956
+ * engine, we need to have this hack here
957
+ */
958
+ xmlSecTransformPtr transform;
959
+
960
+ transform = xmlSecTransformCtxCreateAndPrepend(ctx, xmlSecTransformVisa3DHackId);
961
+ if(!xmlSecTransformIsValid(transform)) {
962
+ xmlSecError(XMLSEC_ERRORS_HERE,
963
+ NULL,
964
+ "xmlSecTransformCtxCreateAndPrepend",
965
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
966
+ "transform=%s",
967
+ xmlSecErrorsSafeString(xmlSecTransformKlassGetName(xmlSecTransformVisa3DHackId)));
968
+ return(-1);
969
+ }
970
+
971
+ ret = xmlSecTransformVisa3DHackSetID(transform, xptr);
972
+ if(ret < 0) {
973
+ xmlSecError(XMLSEC_ERRORS_HERE,
974
+ NULL,
975
+ "xmlSecTransformVisa3DHackSetID",
976
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
977
+ "name=%s",
978
+ xmlSecErrorsSafeString(xmlSecTransformGetName(transform)));
979
+ if(buf != NULL) {
980
+ xmlFree(buf);
981
+ }
982
+ return(-1);
983
+ }
984
+ }
985
+ if(buf != NULL) {
986
+ xmlFree(buf);
987
+ }
988
+
989
+ return(0);
990
+ }
991
+
992
+ /**
993
+ * xmlSecTransformCtxPrepare:
994
+ * @ctx: the pointer to transforms chain processing context.
995
+ * @inputDataType: the expected input type.
996
+ *
997
+ * Prepares the transform context for processing data of @inputDataType.
998
+ *
999
+ * Returns: 0 on success or a negative value otherwise.
1000
+ */
1001
+ int
1002
+ xmlSecTransformCtxPrepare(xmlSecTransformCtxPtr ctx, xmlSecTransformDataType inputDataType) {
1003
+ xmlSecTransformDataType firstType;
1004
+ xmlSecTransformPtr transform;
1005
+ int ret;
1006
+
1007
+ xmlSecAssert2(ctx != NULL, -1);
1008
+ xmlSecAssert2(ctx->result == NULL, -1);
1009
+ xmlSecAssert2(ctx->status == xmlSecTransformStatusNone, -1);
1010
+
1011
+ /* add binary buffer to store result */
1012
+ transform = xmlSecTransformCtxCreateAndAppend(ctx, xmlSecTransformMemBufId);
1013
+ if(!xmlSecTransformIsValid(transform)) {
1014
+ xmlSecError(XMLSEC_ERRORS_HERE,
1015
+ NULL,
1016
+ "xmlSecTransformCreate",
1017
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1018
+ "transform=%s",
1019
+ xmlSecErrorsSafeString(xmlSecTransformKlassGetName(xmlSecTransformMemBufId)));
1020
+ return(-1);
1021
+ }
1022
+ ctx->result = xmlSecTransformMemBufGetBuffer(transform);
1023
+ if(ctx->result == NULL) {
1024
+ xmlSecError(XMLSEC_ERRORS_HERE,
1025
+ NULL,
1026
+ "xmlSecTransformMemBufGetBuffer",
1027
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1028
+ "transform=%s",
1029
+ xmlSecErrorsSafeString(xmlSecTransformKlassGetName(xmlSecTransformMemBufId)));
1030
+ return(-1);
1031
+ }
1032
+
1033
+ firstType = xmlSecTransformGetDataType(ctx->first, xmlSecTransformModePush, ctx);
1034
+ if(((firstType & xmlSecTransformDataTypeBin) == 0) &&
1035
+ ((inputDataType & xmlSecTransformDataTypeBin) != 0)) {
1036
+
1037
+ /* need to add parser transform */
1038
+ transform = xmlSecTransformCtxCreateAndPrepend(ctx, xmlSecTransformXmlParserId);
1039
+ if(transform == NULL) {
1040
+ xmlSecError(XMLSEC_ERRORS_HERE,
1041
+ NULL,
1042
+ "xmlSecTransformCtxCreateAndPrepend",
1043
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1044
+ "transform=%s",
1045
+ xmlSecErrorsSafeString(xmlSecTransformKlassGetName(xmlSecTransformXmlParserId)));
1046
+ return(-1);
1047
+ }
1048
+ } else if(((firstType & xmlSecTransformDataTypeXml) == 0) &&
1049
+ ((inputDataType & xmlSecTransformDataTypeXml) != 0)) {
1050
+
1051
+ /* need to add c14n transform */
1052
+ transform = xmlSecTransformCtxCreateAndPrepend(ctx, xmlSecTransformInclC14NId);
1053
+ if(transform == NULL) {
1054
+ xmlSecError(XMLSEC_ERRORS_HERE,
1055
+ NULL,
1056
+ "xmlSecTransformCtxCreateAndPrepend",
1057
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1058
+ "transform=%s",
1059
+ xmlSecErrorsSafeString(xmlSecTransformKlassGetName(xmlSecTransformInclC14NId)));
1060
+ return(-1);
1061
+ }
1062
+ }
1063
+
1064
+ /* finally let application a chance to verify that it's ok to execte
1065
+ * this transforms chain */
1066
+ if(ctx->preExecCallback != NULL) {
1067
+ ret = (ctx->preExecCallback)(ctx);
1068
+ if(ret < 0) {
1069
+ xmlSecError(XMLSEC_ERRORS_HERE,
1070
+ NULL,
1071
+ "ctx->preExecCallback",
1072
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1073
+ XMLSEC_ERRORS_NO_MESSAGE);
1074
+ return(-1);
1075
+ }
1076
+ }
1077
+
1078
+ ctx->status = xmlSecTransformStatusWorking;
1079
+ return(0);
1080
+ }
1081
+
1082
+ /**
1083
+ * xmlSecTransformCtxBinaryExecute:
1084
+ * @ctx: the pointer to transforms chain processing context.
1085
+ * @data: the input binary data buffer.
1086
+ * @dataSize: the input data size.
1087
+ *
1088
+ * Processes binary data using transforms chain in the @ctx.
1089
+ *
1090
+ * Returns: 0 on success or a negative value otherwise.
1091
+ */
1092
+ int
1093
+ xmlSecTransformCtxBinaryExecute(xmlSecTransformCtxPtr ctx,
1094
+ const xmlSecByte* data, xmlSecSize dataSize) {
1095
+ int ret;
1096
+
1097
+ xmlSecAssert2(ctx != NULL, -1);
1098
+ xmlSecAssert2(ctx->result == NULL, -1);
1099
+ xmlSecAssert2(ctx->status == xmlSecTransformStatusNone, -1);
1100
+ xmlSecAssert2(data != NULL, -1);
1101
+ xmlSecAssert2(dataSize > 0, -1);
1102
+
1103
+ /* we should not have uri stored in ctx */
1104
+ xmlSecAssert2(ctx->uri == NULL, -1);
1105
+
1106
+ ret = xmlSecTransformCtxPrepare(ctx, xmlSecTransformDataTypeBin);
1107
+ if(ret < 0) {
1108
+ xmlSecError(XMLSEC_ERRORS_HERE,
1109
+ NULL,
1110
+ "xmlSecTransformCtxPrepare",
1111
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1112
+ "type=bin");
1113
+ return(-1);
1114
+ }
1115
+
1116
+ ret = xmlSecTransformPushBin(ctx->first, data, dataSize, 1, ctx);
1117
+ if(ret < 0) {
1118
+ xmlSecError(XMLSEC_ERRORS_HERE,
1119
+ NULL,
1120
+ "xmlSecTransformCtxPushBin",
1121
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1122
+ "dataSize=%d", dataSize);
1123
+ return(-1);
1124
+ }
1125
+
1126
+ ctx->status = xmlSecTransformStatusFinished;
1127
+ return(0);
1128
+ }
1129
+
1130
+ /**
1131
+ * xmlSecTransformCtxUriExecute:
1132
+ * @ctx: the pointer to transforms chain processing context.
1133
+ * @uri: the URI.
1134
+ *
1135
+ * Process binary data from the URI using transforms chain in @ctx.
1136
+ *
1137
+ * Returns: 0 on success or a negative value otherwise.
1138
+ */
1139
+ int
1140
+ xmlSecTransformCtxUriExecute(xmlSecTransformCtxPtr ctx, const xmlChar* uri) {
1141
+ xmlSecTransformPtr uriTransform;
1142
+ int ret;
1143
+
1144
+ xmlSecAssert2(ctx != NULL, -1);
1145
+ xmlSecAssert2(ctx->status == xmlSecTransformStatusNone, -1);
1146
+ xmlSecAssert2(uri != NULL, -1);
1147
+
1148
+ /* we should not execute transform for a different uri */
1149
+ xmlSecAssert2((ctx->uri == NULL) || (uri == ctx->uri) || xmlStrEqual(uri, ctx->uri), -1);
1150
+
1151
+ uriTransform = xmlSecTransformCtxCreateAndPrepend(ctx, xmlSecTransformInputURIId);
1152
+ if(uriTransform == NULL) {
1153
+ xmlSecError(XMLSEC_ERRORS_HERE,
1154
+ NULL,
1155
+ "xmlSecTransformCtxCreateAndPrepend",
1156
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1157
+ "transform=%s",
1158
+ xmlSecErrorsSafeString(xmlSecTransformKlassGetName(xmlSecTransformInputURIId)));
1159
+ return(-1);
1160
+ }
1161
+
1162
+ ret = xmlSecTransformInputURIOpen(uriTransform, uri);
1163
+ if(ret < 0) {
1164
+ xmlSecError(XMLSEC_ERRORS_HERE,
1165
+ NULL,
1166
+ "xmlSecTransformInputURIOpen",
1167
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1168
+ "uri=%s",
1169
+ xmlSecErrorsSafeString(uri));
1170
+ return(-1);
1171
+ }
1172
+
1173
+ /* we do not need to do something special for this transform */
1174
+ ret = xmlSecTransformCtxPrepare(ctx, xmlSecTransformDataTypeUnknown);
1175
+ if(ret < 0) {
1176
+ xmlSecError(XMLSEC_ERRORS_HERE,
1177
+ NULL,
1178
+ "xmlSecTransformCtxPrepare",
1179
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1180
+ "type=bin");
1181
+ return(-1);
1182
+ }
1183
+
1184
+ /* Now we have a choice: we either can push from first transform or pop
1185
+ * from last. Our C14N transforms prefers push, so push data!
1186
+ */
1187
+ ret = xmlSecTransformPump(uriTransform, uriTransform->next, ctx);
1188
+ if(ret < 0) {
1189
+ xmlSecError(XMLSEC_ERRORS_HERE,
1190
+ NULL,
1191
+ "xmlSecTransformPump",
1192
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1193
+ "uri=%s",
1194
+ xmlSecErrorsSafeString(uri));
1195
+ return(-1);
1196
+ }
1197
+
1198
+ ctx->status = xmlSecTransformStatusFinished;
1199
+ return(0);
1200
+ }
1201
+
1202
+ /**
1203
+ * xmlSecTransformCtxXmlExecute:
1204
+ * @ctx: the pointer to transforms chain processing context.
1205
+ * @nodes: the input node set.
1206
+ *
1207
+ * Process @nodes using transforms in the transforms chain in @ctx.
1208
+ *
1209
+ * Returns: 0 on success or a negative value otherwise.
1210
+ */
1211
+ int
1212
+ xmlSecTransformCtxXmlExecute(xmlSecTransformCtxPtr ctx, xmlSecNodeSetPtr nodes) {
1213
+ int ret;
1214
+
1215
+ xmlSecAssert2(ctx != NULL, -1);
1216
+ xmlSecAssert2(ctx->result == NULL, -1);
1217
+ xmlSecAssert2(ctx->status == xmlSecTransformStatusNone, -1);
1218
+ xmlSecAssert2(nodes != NULL, -1);
1219
+
1220
+ xmlSecAssert2((ctx->uri == NULL) || (xmlStrlen(ctx->uri) == 0), -1);
1221
+
1222
+ ret = xmlSecTransformCtxPrepare(ctx, xmlSecTransformDataTypeXml);
1223
+ if(ret < 0) {
1224
+ xmlSecError(XMLSEC_ERRORS_HERE,
1225
+ NULL,
1226
+ "xmlSecTransformCtxPrepare",
1227
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1228
+ "type=xml");
1229
+ return(-1);
1230
+ }
1231
+
1232
+ /* it's better to do push than pop because all XML transform
1233
+ * just don't care and c14n likes push more than pop */
1234
+ ret = xmlSecTransformPushXml(ctx->first, nodes, ctx);
1235
+ if(ret < 0) {
1236
+ xmlSecError(XMLSEC_ERRORS_HERE,
1237
+ NULL,
1238
+ "xmlSecTransformPushXml",
1239
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1240
+ "transform=%s",
1241
+ xmlSecErrorsSafeString(xmlSecTransformGetName(ctx->first)));
1242
+ return(-1);
1243
+ }
1244
+
1245
+ ctx->status = xmlSecTransformStatusFinished;
1246
+ return(0);
1247
+ }
1248
+
1249
+ /**
1250
+ * xmlSecTransformCtxExecute:
1251
+ * @ctx: the pointer to transforms chain processing context.
1252
+ * @doc: the pointer to input document.
1253
+ *
1254
+ * Executes transforms chain in @ctx.
1255
+ *
1256
+ * Returns: 0 on success or a negative value otherwise.
1257
+ */
1258
+ int
1259
+ xmlSecTransformCtxExecute(xmlSecTransformCtxPtr ctx, xmlDocPtr doc) {
1260
+ int ret;
1261
+
1262
+ xmlSecAssert2(ctx != NULL, -1);
1263
+ xmlSecAssert2(ctx->result == NULL, -1);
1264
+ xmlSecAssert2(ctx->status == xmlSecTransformStatusNone, -1);
1265
+ xmlSecAssert2(doc != NULL, -1);
1266
+
1267
+ if((ctx->uri == NULL) || (xmlStrlen(ctx->uri) == 0)) {
1268
+ xmlSecNodeSetPtr nodes;
1269
+
1270
+ if((ctx->xptrExpr != NULL) && (xmlStrlen(ctx->xptrExpr) > 0)){
1271
+ /* our xpointer transform takes care of providing correct nodes set */
1272
+ nodes = xmlSecNodeSetCreate(doc, NULL, xmlSecNodeSetNormal);
1273
+ if(nodes == NULL) {
1274
+ xmlSecError(XMLSEC_ERRORS_HERE,
1275
+ NULL,
1276
+ "xmlSecNodeSetCreate",
1277
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1278
+ XMLSEC_ERRORS_NO_MESSAGE);
1279
+ return(-1);
1280
+ }
1281
+
1282
+ } else {
1283
+ /* we do not want to have comments for empty URI */
1284
+ nodes = xmlSecNodeSetGetChildren(doc, NULL, 0, 0);
1285
+ if(nodes == NULL) {
1286
+ xmlSecError(XMLSEC_ERRORS_HERE,
1287
+ NULL,
1288
+ "xmlSecNodeSetGetChildren",
1289
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1290
+ XMLSEC_ERRORS_NO_MESSAGE);
1291
+ return(-1);
1292
+ }
1293
+ }
1294
+ ret = xmlSecTransformCtxXmlExecute(ctx, nodes);
1295
+ if(ret < 0) {
1296
+ xmlSecError(XMLSEC_ERRORS_HERE,
1297
+ NULL,
1298
+ "xmlSecTransformCtxXmlExecute",
1299
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1300
+ XMLSEC_ERRORS_NO_MESSAGE);
1301
+ xmlSecNodeSetDestroy(nodes);
1302
+ return(-1);
1303
+ }
1304
+ /* TODO: don't destroy nodes here */
1305
+ xmlSecNodeSetDestroy(nodes);
1306
+ } else {
1307
+ ret = xmlSecTransformCtxUriExecute(ctx, ctx->uri);
1308
+ if(ret < 0) {
1309
+ xmlSecError(XMLSEC_ERRORS_HERE,
1310
+ NULL,
1311
+ "xmlSecTransformCtxUriExecute",
1312
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1313
+ XMLSEC_ERRORS_NO_MESSAGE);
1314
+ return(-1);
1315
+ }
1316
+ }
1317
+
1318
+ return(0);
1319
+ }
1320
+
1321
+ /**
1322
+ * xmlSecTransformCtxDebugDump:
1323
+ * @ctx: the pointer to transforms chain processing context.
1324
+ * @output: the pointer to output FILE.
1325
+ *
1326
+ * Prints transforms context debug information to @output.
1327
+ */
1328
+ void
1329
+ xmlSecTransformCtxDebugDump(xmlSecTransformCtxPtr ctx, FILE* output) {
1330
+ xmlSecTransformPtr transform;
1331
+
1332
+ xmlSecAssert(ctx != NULL);
1333
+ xmlSecAssert(output != NULL);
1334
+
1335
+ fprintf(output, "== TRANSFORMS CTX (status=%d)\n", ctx->status);
1336
+
1337
+ fprintf(output, "== flags: 0x%08x\n", ctx->flags);
1338
+ fprintf(output, "== flags2: 0x%08x\n", ctx->flags2);
1339
+ if(xmlSecPtrListGetSize(&(ctx->enabledTransforms)) > 0) {
1340
+ fprintf(output, "== enabled transforms: ");
1341
+ xmlSecTransformIdListDebugDump(&(ctx->enabledTransforms), output);
1342
+ } else {
1343
+ fprintf(output, "== enabled transforms: all\n");
1344
+ }
1345
+
1346
+ fprintf(output, "=== uri: %s\n",
1347
+ (ctx->uri != NULL) ? ctx->uri : BAD_CAST "NULL");
1348
+ fprintf(output, "=== uri xpointer expr: %s\n",
1349
+ (ctx->xptrExpr != NULL) ? ctx->xptrExpr : BAD_CAST "NULL");
1350
+ for(transform = ctx->first; transform != NULL; transform = transform->next) {
1351
+ xmlSecTransformDebugDump(transform, output);
1352
+ }
1353
+ }
1354
+
1355
+ /**
1356
+ * xmlSecTransformCtxDebugXmlDump:
1357
+ * @ctx: the pointer to transforms chain processing context.
1358
+ * @output: the pointer to output FILE.
1359
+ *
1360
+ * Prints transforms context debug information to @output in XML format.
1361
+ */
1362
+ void
1363
+ xmlSecTransformCtxDebugXmlDump(xmlSecTransformCtxPtr ctx, FILE* output) {
1364
+ xmlSecTransformPtr transform;
1365
+
1366
+ xmlSecAssert(ctx != NULL);
1367
+ xmlSecAssert(output != NULL);
1368
+
1369
+ fprintf(output, "<TransformCtx status=\"%d\">\n", ctx->status);
1370
+
1371
+ fprintf(output, "<Flags>%08x</Flags>\n", ctx->flags);
1372
+ fprintf(output, "<Flags2>%08x</Flags2>\n", ctx->flags2);
1373
+ if(xmlSecPtrListGetSize(&(ctx->enabledTransforms)) > 0) {
1374
+ fprintf(output, "<EnabledTransforms>\n");
1375
+ xmlSecTransformIdListDebugXmlDump(&(ctx->enabledTransforms), output);
1376
+ fprintf(output, "</EnabledTransforms>\n");
1377
+ } else {
1378
+ fprintf(output, "<EnabledTransforms>all</EnabledTransforms>\n");
1379
+ }
1380
+
1381
+
1382
+ fprintf(output, "<Uri>");
1383
+ xmlSecPrintXmlString(output, ctx->uri);
1384
+ fprintf(output, "</Uri>\n");
1385
+
1386
+ fprintf(output, "<UriXPointer>");
1387
+ xmlSecPrintXmlString(output, ctx->xptrExpr);
1388
+ fprintf(output, "</UriXPointer>\n");
1389
+
1390
+ for(transform = ctx->first; transform != NULL; transform = transform->next) {
1391
+ xmlSecTransformDebugXmlDump(transform, output);
1392
+ }
1393
+ fprintf(output, "</TransformCtx>\n");
1394
+ }
1395
+
1396
+ /**************************************************************************
1397
+ *
1398
+ * xmlSecTransform
1399
+ *
1400
+ *************************************************************************/
1401
+ /**
1402
+ * xmlSecTransformCreate:
1403
+ * @id: the transform id to create.
1404
+ *
1405
+ * Creates new transform of the @id klass. The caller is responsible for
1406
+ * destroying returned tansform using #xmlSecTransformDestroy function.
1407
+ *
1408
+ * Returns: pointer to newly created transform or NULL if an error occurs.
1409
+ */
1410
+ xmlSecTransformPtr
1411
+ xmlSecTransformCreate(xmlSecTransformId id) {
1412
+ xmlSecTransformPtr transform;
1413
+ int ret;
1414
+
1415
+ xmlSecAssert2(id != NULL, NULL);
1416
+ xmlSecAssert2(id->klassSize >= sizeof(xmlSecTransformKlass), NULL);
1417
+ xmlSecAssert2(id->objSize >= sizeof(xmlSecTransform), NULL);
1418
+ xmlSecAssert2(id->name != NULL, NULL);
1419
+
1420
+ /* Allocate a new xmlSecTransform and fill the fields. */
1421
+ transform = (xmlSecTransformPtr)xmlMalloc(id->objSize);
1422
+ if(transform == NULL) {
1423
+ xmlSecError(XMLSEC_ERRORS_HERE,
1424
+ NULL,
1425
+ NULL,
1426
+ XMLSEC_ERRORS_R_MALLOC_FAILED,
1427
+ "size=%d", id->objSize);
1428
+ return(NULL);
1429
+ }
1430
+ memset(transform, 0, id->objSize);
1431
+ transform->id = id;
1432
+
1433
+ if(id->initialize != NULL) {
1434
+ ret = (id->initialize)(transform);
1435
+ if(ret < 0) {
1436
+ xmlSecError(XMLSEC_ERRORS_HERE,
1437
+ xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
1438
+ "id->initialize",
1439
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1440
+ XMLSEC_ERRORS_NO_MESSAGE);
1441
+ xmlSecTransformDestroy(transform);
1442
+ return(NULL);
1443
+ }
1444
+ }
1445
+
1446
+ ret = xmlSecBufferInitialize(&(transform->inBuf), 0);
1447
+ if(ret < 0) {
1448
+ xmlSecError(XMLSEC_ERRORS_HERE,
1449
+ xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
1450
+ "xmlSecBufferInitialize",
1451
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1452
+ "size=%d", 0);
1453
+ xmlSecTransformDestroy(transform);
1454
+ return(NULL);
1455
+ }
1456
+
1457
+ ret = xmlSecBufferInitialize(&(transform->outBuf), 0);
1458
+ if(ret < 0) {
1459
+ xmlSecError(XMLSEC_ERRORS_HERE,
1460
+ xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
1461
+ "xmlSecBufferInitialize",
1462
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1463
+ "size=%d", 0);
1464
+ xmlSecTransformDestroy(transform);
1465
+ return(NULL);
1466
+ }
1467
+
1468
+ return(transform);
1469
+ }
1470
+
1471
+ /**
1472
+ * xmlSecTransformDestroy:
1473
+ * @transform: the pointer to transform.
1474
+ *
1475
+ * Destroys transform created with #xmlSecTransformCreate function.
1476
+ */
1477
+ void
1478
+ xmlSecTransformDestroy(xmlSecTransformPtr transform) {
1479
+ xmlSecAssert(xmlSecTransformIsValid(transform));
1480
+ xmlSecAssert(transform->id->objSize > 0);
1481
+
1482
+ /* first need to remove ourselves from chain */
1483
+ xmlSecTransformRemove(transform);
1484
+
1485
+ xmlSecBufferFinalize(&(transform->inBuf));
1486
+ xmlSecBufferFinalize(&(transform->outBuf));
1487
+
1488
+ /* we never destroy input nodes, output nodes
1489
+ * are destroyed if and only if they are different
1490
+ * from input nodes
1491
+ */
1492
+ if((transform->outNodes != NULL) && (transform->outNodes != transform->inNodes)) {
1493
+ xmlSecNodeSetDestroy(transform->outNodes);
1494
+ }
1495
+ if(transform->id->finalize != NULL) {
1496
+ (transform->id->finalize)(transform);
1497
+ }
1498
+ memset(transform, 0, transform->id->objSize);
1499
+ xmlFree(transform);
1500
+ }
1501
+
1502
+ /**
1503
+ * xmlSecTransformNodeRead:
1504
+ * @node: the pointer to the transform's node.
1505
+ * @usage: the transform usage (signature, encryption, ...).
1506
+ * @transformCtx: the transform's chaing processing context.
1507
+ *
1508
+ * Reads transform from the @node as follows:
1509
+ *
1510
+ * 1) reads "Algorithm" attribute;
1511
+ *
1512
+ * 2) checks the lists of known and allowed transforms;
1513
+ *
1514
+ * 3) calls transform's create method;
1515
+ *
1516
+ * 4) calls transform's read transform node method.
1517
+ *
1518
+ * Returns: pointer to newly created transform or NULL if an error occurs.
1519
+ */
1520
+ xmlSecTransformPtr
1521
+ xmlSecTransformNodeRead(xmlNodePtr node, xmlSecTransformUsage usage, xmlSecTransformCtxPtr transformCtx) {
1522
+ xmlSecTransformPtr transform;
1523
+ xmlSecTransformId id;
1524
+ xmlChar *href;
1525
+ int ret;
1526
+
1527
+ xmlSecAssert2(node != NULL, NULL);
1528
+ xmlSecAssert2(transformCtx != NULL, NULL);
1529
+
1530
+ href = xmlGetProp(node, xmlSecAttrAlgorithm);
1531
+ if(href == NULL) {
1532
+ xmlSecError(XMLSEC_ERRORS_HERE,
1533
+ NULL,
1534
+ xmlSecErrorsSafeString(xmlSecAttrAlgorithm),
1535
+ XMLSEC_ERRORS_R_INVALID_NODE_ATTRIBUTE,
1536
+ "node=%s",
1537
+ xmlSecErrorsSafeString(xmlSecNodeGetName(node)));
1538
+ return(NULL);
1539
+ }
1540
+
1541
+ id = xmlSecTransformIdListFindByHref(xmlSecTransformIdsGet(), href, usage);
1542
+ if(id == xmlSecTransformIdUnknown) {
1543
+ xmlSecError(XMLSEC_ERRORS_HERE,
1544
+ NULL,
1545
+ "xmlSecTransformIdListFindByHref",
1546
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1547
+ "href=%s",
1548
+ xmlSecErrorsSafeString(href));
1549
+ xmlFree(href);
1550
+ return(NULL);
1551
+ }
1552
+
1553
+ /* check with enabled transforms list */
1554
+ if((xmlSecPtrListGetSize(&(transformCtx->enabledTransforms)) > 0) &&
1555
+ (xmlSecTransformIdListFind(&(transformCtx->enabledTransforms), id) != 1)) {
1556
+ xmlSecError(XMLSEC_ERRORS_HERE,
1557
+ NULL,
1558
+ xmlSecErrorsSafeString(xmlSecTransformKlassGetName(id)),
1559
+ XMLSEC_ERRORS_R_TRANSFORM_DISABLED,
1560
+ "href=%s",
1561
+ xmlSecErrorsSafeString(href));
1562
+ xmlFree(href);
1563
+ return(NULL);
1564
+ }
1565
+
1566
+ transform = xmlSecTransformCreate(id);
1567
+ if(!xmlSecTransformIsValid(transform)) {
1568
+ xmlSecError(XMLSEC_ERRORS_HERE,
1569
+ NULL,
1570
+ "xmlSecTransformCreate",
1571
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1572
+ "transform=%s",
1573
+ xmlSecErrorsSafeString(xmlSecTransformKlassGetName(id)));
1574
+ xmlFree(href);
1575
+ return(NULL);
1576
+ }
1577
+
1578
+ if(transform->id->readNode != NULL) {
1579
+ ret = transform->id->readNode(transform, node, transformCtx);
1580
+ if(ret < 0) {
1581
+ xmlSecError(XMLSEC_ERRORS_HERE,
1582
+ NULL,
1583
+ "id->readNode",
1584
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1585
+ "transform=%s",
1586
+ xmlSecErrorsSafeString(xmlSecTransformGetName(transform)));
1587
+ xmlSecTransformDestroy(transform);
1588
+ xmlFree(href);
1589
+ return(NULL);
1590
+ }
1591
+ }
1592
+
1593
+ /* finally remember the transform node */
1594
+ transform->hereNode = node;
1595
+ xmlFree(href);
1596
+ return(transform);
1597
+ }
1598
+
1599
+ /**
1600
+ * xmlSecTransformPump:
1601
+ * @left: the source pumping transform.
1602
+ * @right: the destination pumping transform.
1603
+ * @transformCtx: the transform's chaing processing context.
1604
+ *
1605
+ * Pops data from @left transform and pushes to @right transform until
1606
+ * no more data is available.
1607
+ *
1608
+ * Returns: 0 on success or a negative value if an error occurs.
1609
+ */
1610
+ int
1611
+ xmlSecTransformPump(xmlSecTransformPtr left, xmlSecTransformPtr right, xmlSecTransformCtxPtr transformCtx) {
1612
+ xmlSecTransformDataType leftType;
1613
+ xmlSecTransformDataType rightType;
1614
+ int ret;
1615
+
1616
+ xmlSecAssert2(xmlSecTransformIsValid(left), -1);
1617
+ xmlSecAssert2(xmlSecTransformIsValid(right), -1);
1618
+ xmlSecAssert2(transformCtx != NULL, -1);
1619
+
1620
+ leftType = xmlSecTransformGetDataType(left, xmlSecTransformModePop, transformCtx);
1621
+ rightType = xmlSecTransformGetDataType(right, xmlSecTransformModePush, transformCtx);
1622
+
1623
+ if(((leftType & xmlSecTransformDataTypeXml) != 0) &&
1624
+ ((rightType & xmlSecTransformDataTypeXml) != 0)) {
1625
+
1626
+ xmlSecNodeSetPtr nodes = NULL;
1627
+
1628
+ ret = xmlSecTransformPopXml(left, &nodes, transformCtx);
1629
+ if(ret < 0) {
1630
+ xmlSecError(XMLSEC_ERRORS_HERE,
1631
+ xmlSecErrorsSafeString(xmlSecTransformGetName(left)),
1632
+ "xmlSecTransformPopXml",
1633
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1634
+ XMLSEC_ERRORS_NO_MESSAGE);
1635
+ return(-1);
1636
+ }
1637
+
1638
+ ret = xmlSecTransformPushXml(right, nodes, transformCtx);
1639
+ if(ret < 0) {
1640
+ xmlSecError(XMLSEC_ERRORS_HERE,
1641
+ xmlSecErrorsSafeString(xmlSecTransformGetName(right)),
1642
+ "xmlSecTransformPushXml",
1643
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1644
+ XMLSEC_ERRORS_NO_MESSAGE);
1645
+ return(-1);
1646
+ }
1647
+ } else if(((leftType & xmlSecTransformDataTypeBin) != 0) &&
1648
+ ((rightType & xmlSecTransformDataTypeBin) != 0)) {
1649
+ xmlSecByte buf[XMLSEC_TRANSFORM_BINARY_CHUNK];
1650
+ xmlSecSize bufSize;
1651
+ int final;
1652
+
1653
+ do {
1654
+ ret = xmlSecTransformPopBin(left, buf, sizeof(buf), &bufSize, transformCtx);
1655
+ if(ret < 0) {
1656
+ xmlSecError(XMLSEC_ERRORS_HERE,
1657
+ xmlSecErrorsSafeString(xmlSecTransformGetName(left)),
1658
+ "xmlSecTransformPopBin",
1659
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1660
+ XMLSEC_ERRORS_NO_MESSAGE);
1661
+ return(-1);
1662
+ }
1663
+ final = (bufSize == 0) ? 1 : 0;
1664
+ ret = xmlSecTransformPushBin(right, buf, bufSize, final, transformCtx);
1665
+ if(ret < 0) {
1666
+ xmlSecError(XMLSEC_ERRORS_HERE,
1667
+ xmlSecErrorsSafeString(xmlSecTransformGetName(right)),
1668
+ "xmlSecTransformPushBin",
1669
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1670
+ XMLSEC_ERRORS_NO_MESSAGE);
1671
+ return(-1);
1672
+ }
1673
+ } while(final == 0);
1674
+ } else {
1675
+ xmlSecError(XMLSEC_ERRORS_HERE,
1676
+ xmlSecErrorsSafeString(xmlSecTransformGetName(left)),
1677
+ xmlSecErrorsSafeString(xmlSecTransformGetName(right)),
1678
+ XMLSEC_ERRORS_R_INVALID_TRANSFORM,
1679
+ "transforms input/output data formats do not match");
1680
+ }
1681
+ return(0);
1682
+ }
1683
+
1684
+
1685
+ /**
1686
+ * xmlSecTransformSetKey:
1687
+ * @transform: the pointer to transform.
1688
+ * @key: the pointer to key.
1689
+ *
1690
+ * Sets the transform's key.
1691
+ *
1692
+ * Returns: 0 on success or a negative value otherwise.
1693
+ */
1694
+ int
1695
+ xmlSecTransformSetKey(xmlSecTransformPtr transform, xmlSecKeyPtr key) {
1696
+ xmlSecAssert2(xmlSecTransformIsValid(transform), -1);
1697
+ xmlSecAssert2(key != NULL, -1);
1698
+
1699
+ if(transform->id->setKey != NULL) {
1700
+ return((transform->id->setKey)(transform, key));
1701
+ }
1702
+ return(0);
1703
+ }
1704
+
1705
+ /**
1706
+ * xmlSecTransformSetKeyReq:
1707
+ * @transform: the pointer to transform.
1708
+ * @keyReq: the pointer to keys requirements object.
1709
+ *
1710
+ * Sets the key requirements for @transform in the @keyReq.
1711
+ *
1712
+ * Returns: 0 on success or a negative value otherwise.
1713
+ */
1714
+ int
1715
+ xmlSecTransformSetKeyReq(xmlSecTransformPtr transform, xmlSecKeyReqPtr keyReq) {
1716
+ xmlSecAssert2(xmlSecTransformIsValid(transform), -1);
1717
+ xmlSecAssert2(keyReq != NULL, -1);
1718
+
1719
+ keyReq->keyId = xmlSecKeyDataIdUnknown;
1720
+ keyReq->keyType = xmlSecKeyDataTypeUnknown;
1721
+ keyReq->keyUsage = xmlSecKeyUsageAny;
1722
+ keyReq->keyBitsSize = 0;
1723
+
1724
+ if(transform->id->setKeyReq != NULL) {
1725
+ return((transform->id->setKeyReq)(transform, keyReq));
1726
+ }
1727
+ return(0);
1728
+ }
1729
+
1730
+ /**
1731
+ * xmlSecTransformVerify:
1732
+ * @transform: the pointer to transform.
1733
+ * @data: the binary data for verification.
1734
+ * @dataSize: the data size.
1735
+ * @transformCtx: the transform's chaing processing context.
1736
+ *
1737
+ * Verifies the data with transform's processing results
1738
+ * (for digest, HMAC and signature transforms). The verification
1739
+ * result is stored in the #status member of #xmlSecTransform object.
1740
+ *
1741
+ * Returns: 0 on success or a negative value if an error occurs.
1742
+ */
1743
+ int
1744
+ xmlSecTransformVerify(xmlSecTransformPtr transform, const xmlSecByte* data,
1745
+ xmlSecSize dataSize, xmlSecTransformCtxPtr transformCtx) {
1746
+ xmlSecAssert2(xmlSecTransformIsValid(transform), -1);
1747
+ xmlSecAssert2(transform->id->verify != NULL, -1);
1748
+ xmlSecAssert2(transformCtx != NULL, -1);
1749
+
1750
+ return((transform->id->verify)(transform, data, dataSize, transformCtx));
1751
+ }
1752
+
1753
+ /**
1754
+ * xmlSecTransformVerifyNodeContent:
1755
+ * @transform: the pointer to transform.
1756
+ * @node: the pointer to node.
1757
+ * @transformCtx: the transform's chaing processing context.
1758
+ *
1759
+ * Gets the @node content, base64 decodes it and calls #xmlSecTransformVerify
1760
+ * function to verify binary results.
1761
+ *
1762
+ * Returns: 0 on success or a negative value if an error occurs.
1763
+ */
1764
+ int
1765
+ xmlSecTransformVerifyNodeContent(xmlSecTransformPtr transform, xmlNodePtr node,
1766
+ xmlSecTransformCtxPtr transformCtx) {
1767
+ xmlSecBuffer buffer;
1768
+ int ret;
1769
+
1770
+ xmlSecAssert2(xmlSecTransformIsValid(transform), -1);
1771
+ xmlSecAssert2(node != NULL, -1);
1772
+ xmlSecAssert2(transformCtx != NULL, -1);
1773
+
1774
+ ret = xmlSecBufferInitialize(&buffer, 0);
1775
+ if(ret < 0) {
1776
+ xmlSecError(XMLSEC_ERRORS_HERE,
1777
+ xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
1778
+ "xmlSecBufferInitialize",
1779
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1780
+ XMLSEC_ERRORS_NO_MESSAGE);
1781
+ return(-1);
1782
+ }
1783
+
1784
+ ret = xmlSecBufferBase64NodeContentRead(&buffer, node);
1785
+ if((ret < 0) || (xmlSecBufferGetData(&buffer) == NULL)) {
1786
+ xmlSecError(XMLSEC_ERRORS_HERE,
1787
+ xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
1788
+ "xmlSecBufferBase64NodeContentRead",
1789
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1790
+ XMLSEC_ERRORS_NO_MESSAGE);
1791
+ xmlSecBufferFinalize(&buffer);
1792
+ return(-1);
1793
+ }
1794
+
1795
+ ret = xmlSecTransformVerify(transform, xmlSecBufferGetData(&buffer),
1796
+ xmlSecBufferGetSize(&buffer), transformCtx);
1797
+ if(ret < 0) {
1798
+ xmlSecError(XMLSEC_ERRORS_HERE,
1799
+ xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
1800
+ "xmlSecTransformVerify",
1801
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1802
+ XMLSEC_ERRORS_NO_MESSAGE);
1803
+ xmlSecBufferFinalize(&buffer);
1804
+ return(-1);
1805
+ }
1806
+
1807
+ xmlSecBufferFinalize(&buffer);
1808
+ return(0);
1809
+ }
1810
+
1811
+ /**
1812
+ * xmlSecTransformGetDataType:
1813
+ * @transform: the pointer to transform.
1814
+ * @mode: the data mode (push or pop).
1815
+ * @transformCtx: the transform's chaing processing context.
1816
+ *
1817
+ * Gets transform input (@mode is "push") or output (@mode is "pop") data
1818
+ * type (binary or XML).
1819
+ *
1820
+ * Returns: the transform's data type for the @mode operation.
1821
+ */
1822
+ xmlSecTransformDataType
1823
+ xmlSecTransformGetDataType(xmlSecTransformPtr transform, xmlSecTransformMode mode,
1824
+ xmlSecTransformCtxPtr transformCtx) {
1825
+ xmlSecAssert2(xmlSecTransformIsValid(transform), xmlSecTransformDataTypeUnknown);
1826
+ xmlSecAssert2(transform->id->getDataType != NULL, xmlSecTransformDataTypeUnknown);
1827
+
1828
+ return((transform->id->getDataType)(transform, mode, transformCtx));
1829
+ }
1830
+
1831
+ /**
1832
+ * xmlSecTransformPushBin:
1833
+ * @transform: the pointer to transform object.
1834
+ * @data: the input binary data,
1835
+ * @dataSize: the input data size.
1836
+ * @final: the flag: if set to 1 then it's the last
1837
+ * data chunk.
1838
+ * @transformCtx: the pointer to transform context object.
1839
+ *
1840
+ * Process binary @data and pushes results to next transform.
1841
+ *
1842
+ * Returns: 0 on success or a negative value if an error occurs.
1843
+ */
1844
+ int
1845
+ xmlSecTransformPushBin(xmlSecTransformPtr transform, const xmlSecByte* data,
1846
+ xmlSecSize dataSize, int final, xmlSecTransformCtxPtr transformCtx) {
1847
+ xmlSecAssert2(xmlSecTransformIsValid(transform), -1);
1848
+ xmlSecAssert2(transform->id->pushBin != NULL, -1);
1849
+ xmlSecAssert2(transformCtx != NULL, -1);
1850
+
1851
+ return((transform->id->pushBin)(transform, data, dataSize, final, transformCtx));
1852
+ }
1853
+
1854
+ /**
1855
+ * xmlSecTransformPopBin:
1856
+ * @transform: the pointer to transform object.
1857
+ * @data: the buffer to store result data.
1858
+ * @maxDataSize: the size of the buffer #data.
1859
+ * @dataSize: the pointer to returned data size.
1860
+ * @transformCtx: the pointer to transform context object.
1861
+ *
1862
+ * Pops data from previous transform in the chain, processes data and
1863
+ * returns result in the @data buffer. The size of returned data is
1864
+ * placed in the @dataSize.
1865
+ *
1866
+ * Returns: 0 on success or a negative value if an error occurs.
1867
+ */
1868
+ int
1869
+ xmlSecTransformPopBin(xmlSecTransformPtr transform, xmlSecByte* data,
1870
+ xmlSecSize maxDataSize, xmlSecSize* dataSize, xmlSecTransformCtxPtr transformCtx) {
1871
+ xmlSecAssert2(xmlSecTransformIsValid(transform), -1);
1872
+ xmlSecAssert2(transform->id->popBin != NULL, -1);
1873
+ xmlSecAssert2(data != NULL, -1);
1874
+ xmlSecAssert2(dataSize != NULL, -1);
1875
+ xmlSecAssert2(transformCtx != NULL, -1);
1876
+
1877
+ return((transform->id->popBin)(transform, data, maxDataSize, dataSize, transformCtx));
1878
+ }
1879
+
1880
+ /**
1881
+ * xmlSecTransformPushXml:
1882
+ * @transform: the pointer to transform object.
1883
+ * @nodes: the input nodes.
1884
+ * @transformCtx: the pointer to transform context object.
1885
+ *
1886
+ * Processes @nodes and pushes result to the next transform in the chain.
1887
+ *
1888
+ * Returns: 0 on success or a negative value if an error occurs.
1889
+ */
1890
+ int
1891
+ xmlSecTransformPushXml(xmlSecTransformPtr transform, xmlSecNodeSetPtr nodes,
1892
+ xmlSecTransformCtxPtr transformCtx) {
1893
+ xmlSecAssert2(xmlSecTransformIsValid(transform), -1);
1894
+ xmlSecAssert2(transform->id->pushXml != NULL, -1);
1895
+ xmlSecAssert2(transformCtx != NULL, -1);
1896
+
1897
+ return((transform->id->pushXml)(transform, nodes, transformCtx));
1898
+ }
1899
+
1900
+ /**
1901
+ * xmlSecTransformPopXml:
1902
+ * @transform: the pointer to transform object.
1903
+ * @nodes: the pointer to store popinter to result nodes.
1904
+ * @transformCtx: the pointer to transform context object.
1905
+ *
1906
+ * Pops data from previous transform in the chain, processes the data and
1907
+ * returns result in @nodes.
1908
+ *
1909
+ * Returns: 0 on success or a negative value if an error occurs.
1910
+ */
1911
+ int
1912
+ xmlSecTransformPopXml(xmlSecTransformPtr transform, xmlSecNodeSetPtr* nodes,
1913
+ xmlSecTransformCtxPtr transformCtx) {
1914
+ xmlSecAssert2(xmlSecTransformIsValid(transform), -1);
1915
+ xmlSecAssert2(transform->id->popXml != NULL, -1);
1916
+ xmlSecAssert2(transformCtx != NULL, -1);
1917
+
1918
+ return((transform->id->popXml)(transform, nodes, transformCtx));
1919
+ }
1920
+
1921
+ /**
1922
+ * xmlSecTransformExecute:
1923
+ * @transform: the pointer to transform.
1924
+ * @last: the flag: if set to 1 then it's the last data chunk.
1925
+ * @transformCtx: the transform's chaing processing context.
1926
+ *
1927
+ * Executes transform (used by default popBin/pushBin/popXml/pushXml methods).
1928
+ *
1929
+ * Returns: 0 on success or a negative value if an error occurs.
1930
+ */
1931
+ int
1932
+ xmlSecTransformExecute(xmlSecTransformPtr transform, int last, xmlSecTransformCtxPtr transformCtx) {
1933
+ xmlSecAssert2(xmlSecTransformIsValid(transform), -1);
1934
+ xmlSecAssert2(transform->id->execute != NULL, -1);
1935
+ xmlSecAssert2(transformCtx != NULL, -1);
1936
+
1937
+ return((transform->id->execute)(transform, last, transformCtx));
1938
+ }
1939
+
1940
+ /**
1941
+ * xmlSecTransformDebugDump:
1942
+ * @transform: the pointer to transform.
1943
+ * @output: the pointer to output FILE.
1944
+ *
1945
+ * Prints transform's debug information to @output.
1946
+ */
1947
+ void
1948
+ xmlSecTransformDebugDump(xmlSecTransformPtr transform, FILE* output) {
1949
+ xmlSecAssert(xmlSecTransformIsValid(transform));
1950
+ xmlSecAssert(output != NULL);
1951
+
1952
+ fprintf(output, "=== Transform: %s (href=%s)\n",
1953
+ xmlSecErrorsSafeString(transform->id->name),
1954
+ xmlSecErrorsSafeString(transform->id->href));
1955
+ }
1956
+
1957
+ /**
1958
+ * xmlSecTransformDebugXmlDump:
1959
+ * @transform: the pointer to transform.
1960
+ * @output: the pointer to output FILE.
1961
+ *
1962
+ * Prints transform's debug information to @output in XML format.
1963
+ */
1964
+ void
1965
+ xmlSecTransformDebugXmlDump(xmlSecTransformPtr transform, FILE* output) {
1966
+ xmlSecAssert(xmlSecTransformIsValid(transform));
1967
+ xmlSecAssert(output != NULL);
1968
+
1969
+ fprintf(output, "<Transform name=\"");
1970
+ xmlSecPrintXmlString(output,transform->id->name);
1971
+ fprintf(output, "\" href=\"");
1972
+ xmlSecPrintXmlString(output, transform->id->href);
1973
+ fprintf(output, "\" />\n");
1974
+ }
1975
+
1976
+ /************************************************************************
1977
+ *
1978
+ * Operations on transforms chain
1979
+ *
1980
+ ************************************************************************/
1981
+ /**
1982
+ * xmlSecTransformConnect:
1983
+ * @left: the pointer to left (prev) transform.
1984
+ * @right: the pointer to right (next) transform.
1985
+ * @transformCtx: the transform's chaing processing context.
1986
+ *
1987
+ * If the data object is a node-set and the next transform requires octets,
1988
+ * the signature application MUST attempt to convert the node-set to an octet
1989
+ * stream using Canonical XML [XML-C14N].
1990
+ *
1991
+ * The story is different if the right transform is base64 decode
1992
+ * (http://www.w3.org/TR/xmldsig-core/#sec-Base-64):
1993
+ *
1994
+ * This transform requires an octet stream for input. If an XPath node-set
1995
+ * (or sufficiently functional alternative) is given as input, then it is
1996
+ * converted to an octet stream by performing operations logically equivalent
1997
+ * to 1) applying an XPath transform with expression self::text(), then 2)
1998
+ * taking the string-value of the node-set. Thus, if an XML element is
1999
+ * identified by a barename XPointer in the Reference URI, and its content
2000
+ * consists solely of base64 encoded character data, then this transform
2001
+ * automatically strips away the start and end tags of the identified element
2002
+ * and any of its descendant elements as well as any descendant comments and
2003
+ * processing instructions. The output of this transform is an octet stream.
2004
+ *
2005
+ * Returns: 0 on success or a negative value if an error occurs.
2006
+ */
2007
+ int
2008
+ xmlSecTransformConnect(xmlSecTransformPtr left, xmlSecTransformPtr right,
2009
+ xmlSecTransformCtxPtr transformCtx) {
2010
+ xmlSecTransformDataType leftType;
2011
+ xmlSecTransformDataType rightType;
2012
+ xmlSecTransformId middleId;
2013
+ xmlSecTransformPtr middle;
2014
+
2015
+ xmlSecAssert2(xmlSecTransformIsValid(left), -1);
2016
+ xmlSecAssert2(xmlSecTransformIsValid(right), -1);
2017
+ xmlSecAssert2(transformCtx != NULL, -1);
2018
+
2019
+ leftType = xmlSecTransformGetDataType(left, xmlSecTransformModePop, transformCtx);
2020
+ rightType = xmlSecTransformGetDataType(right, xmlSecTransformModePush, transformCtx);
2021
+
2022
+ /* happy case first: nothing need to be done */
2023
+ if((((leftType & xmlSecTransformDataTypeBin) != 0) &&
2024
+ ((rightType & xmlSecTransformDataTypeBin) != 0)) ||
2025
+ (((leftType & xmlSecTransformDataTypeXml) != 0) &&
2026
+ ((rightType & xmlSecTransformDataTypeXml) != 0))) {
2027
+
2028
+ left->next = right;
2029
+ right->prev = left;
2030
+ return(0);
2031
+ }
2032
+
2033
+ if(((leftType & xmlSecTransformDataTypeBin) != 0) &&
2034
+ ((rightType & xmlSecTransformDataTypeXml) != 0)) {
2035
+
2036
+ /* need to insert parser */
2037
+ middleId = xmlSecTransformXmlParserId;
2038
+ } else if(((leftType & xmlSecTransformDataTypeXml) != 0) &&
2039
+ ((rightType & xmlSecTransformDataTypeBin) != 0)) {
2040
+
2041
+ /* need to insert c14n or special pre-base64 transform */
2042
+ if(xmlSecTransformCheckId(right, xmlSecTransformBase64Id)) {
2043
+ middleId = xmlSecTransformRemoveXmlTagsC14NId;
2044
+ } else {
2045
+ middleId = xmlSecTransformInclC14NId;
2046
+ }
2047
+ } else {
2048
+ xmlSecError(XMLSEC_ERRORS_HERE,
2049
+ xmlSecErrorsSafeString(xmlSecTransformGetName(left)),
2050
+ xmlSecErrorsSafeString(xmlSecTransformGetName(right)),
2051
+ XMLSEC_ERRORS_R_INVALID_TRANSFORM,
2052
+ "leftType=%d;rightType=%d",
2053
+ leftType, rightType);
2054
+ return(-1);
2055
+ }
2056
+
2057
+ /* insert transform */
2058
+ middle = xmlSecTransformCreate(middleId);
2059
+ if(middle == NULL) {
2060
+ xmlSecError(XMLSEC_ERRORS_HERE,
2061
+ xmlSecErrorsSafeString(xmlSecTransformGetName(left)),
2062
+ "xmlSecTransformCreate",
2063
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
2064
+ "transform=%s",
2065
+ xmlSecErrorsSafeString(xmlSecTransformKlassGetName(middleId)));
2066
+ return(-1);
2067
+ }
2068
+ left->next = middle;
2069
+ middle->prev = left;
2070
+ middle->next = right;
2071
+ right->prev = middle;
2072
+ return(0);
2073
+ }
2074
+
2075
+ /**
2076
+ * xmlSecTransformRemove:
2077
+ * @transform: the pointer to #xmlSecTransform structure.
2078
+ *
2079
+ * Removes @transform from the chain.
2080
+ */
2081
+ void
2082
+ xmlSecTransformRemove(xmlSecTransformPtr transform) {
2083
+ xmlSecAssert(xmlSecTransformIsValid(transform));
2084
+
2085
+ if(transform->next != NULL) {
2086
+ transform->next->prev = transform->prev;
2087
+ }
2088
+ if(transform->prev != NULL) {
2089
+ transform->prev->next = transform->next;
2090
+ }
2091
+ transform->next = transform->prev = NULL;
2092
+ }
2093
+
2094
+
2095
+ /************************************************************************
2096
+ *
2097
+ * Default callbacks, most of the transforms can use them
2098
+ *
2099
+ ************************************************************************/
2100
+ /**
2101
+ * xmlSecTransformDefaultGetDataType:
2102
+ * @transform: the pointer to transform.
2103
+ * @mode: the data mode (push or pop).
2104
+ * @transformCtx: the transform's chaing processing context.
2105
+ *
2106
+ * Gets transform input (@mode is "push") or output (@mode is "pop") data
2107
+ * type (binary or XML) by analyzing available pushBin/popBin/pushXml/popXml
2108
+ * methods.
2109
+ *
2110
+ * Returns: the transform's data type for the @mode operation.
2111
+ */
2112
+ xmlSecTransformDataType
2113
+ xmlSecTransformDefaultGetDataType(xmlSecTransformPtr transform, xmlSecTransformMode mode,
2114
+ xmlSecTransformCtxPtr transformCtx) {
2115
+ xmlSecTransformDataType type = xmlSecTransformDataTypeUnknown;
2116
+
2117
+ xmlSecAssert2(xmlSecTransformIsValid(transform), xmlSecTransformDataTypeUnknown);
2118
+ xmlSecAssert2(transformCtx != NULL, xmlSecTransformDataTypeUnknown);
2119
+
2120
+ /* we'll try to guess the data type based on the handlers we have */
2121
+ switch(mode) {
2122
+ case xmlSecTransformModePush:
2123
+ if(transform->id->pushBin != NULL) {
2124
+ type |= xmlSecTransformDataTypeBin;
2125
+ }
2126
+ if(transform->id->pushXml != NULL) {
2127
+ type |= xmlSecTransformDataTypeXml;
2128
+ }
2129
+ break;
2130
+ case xmlSecTransformModePop:
2131
+ if(transform->id->popBin != NULL) {
2132
+ type |= xmlSecTransformDataTypeBin;
2133
+ }
2134
+ if(transform->id->popXml != NULL) {
2135
+ type |= xmlSecTransformDataTypeXml;
2136
+ }
2137
+ break;
2138
+ default:
2139
+ xmlSecError(XMLSEC_ERRORS_HERE,
2140
+ xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
2141
+ NULL,
2142
+ XMLSEC_ERRORS_R_INVALID_DATA,
2143
+ "mode=%d", mode);
2144
+ return(xmlSecTransformDataTypeUnknown);
2145
+ }
2146
+
2147
+ return(type);
2148
+ }
2149
+
2150
+ /**
2151
+ * xmlSecTransformDefaultPushBin:
2152
+ * @transform: the pointer to transform object.
2153
+ * @data: the input binary data,
2154
+ * @dataSize: the input data size.
2155
+ * @final: the flag: if set to 1 then it's the last
2156
+ * data chunk.
2157
+ * @transformCtx: the pointer to transform context object.
2158
+ *
2159
+ * Process binary @data by calling transform's execute method and pushes
2160
+ * results to next transform.
2161
+ *
2162
+ * Returns: 0 on success or a negative value if an error occurs.
2163
+ */
2164
+ int
2165
+ xmlSecTransformDefaultPushBin(xmlSecTransformPtr transform, const xmlSecByte* data,
2166
+ xmlSecSize dataSize, int final, xmlSecTransformCtxPtr transformCtx) {
2167
+ xmlSecSize inSize = 0;
2168
+ xmlSecSize outSize = 0;
2169
+ int finalData = 0;
2170
+ int ret;
2171
+
2172
+ xmlSecAssert2(xmlSecTransformIsValid(transform), -1);
2173
+ xmlSecAssert2(transformCtx != NULL, -1);
2174
+
2175
+ do {
2176
+ /* append data to input buffer */
2177
+ if(dataSize > 0) {
2178
+ xmlSecSize chunkSize;
2179
+
2180
+ xmlSecAssert2(data != NULL, -1);
2181
+
2182
+ chunkSize = dataSize;
2183
+ if(chunkSize > XMLSEC_TRANSFORM_BINARY_CHUNK) {
2184
+ chunkSize = XMLSEC_TRANSFORM_BINARY_CHUNK;
2185
+ }
2186
+
2187
+ ret = xmlSecBufferAppend(&(transform->inBuf), data, chunkSize);
2188
+ if(ret < 0) {
2189
+ xmlSecError(XMLSEC_ERRORS_HERE,
2190
+ xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
2191
+ "xmlSecBufferAppend",
2192
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
2193
+ "size=%d", chunkSize);
2194
+ return(-1);
2195
+ }
2196
+
2197
+ dataSize -= chunkSize;
2198
+ data += chunkSize;
2199
+ }
2200
+
2201
+ /* process data */
2202
+ inSize = xmlSecBufferGetSize(&(transform->inBuf));
2203
+ outSize = xmlSecBufferGetSize(&(transform->outBuf));
2204
+ finalData = (((dataSize == 0) && (final != 0)) ? 1 : 0);
2205
+ ret = xmlSecTransformExecute(transform, finalData, transformCtx);
2206
+ if(ret < 0) {
2207
+ xmlSecError(XMLSEC_ERRORS_HERE,
2208
+ xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
2209
+ "xmlSecTransformExecute",
2210
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
2211
+ "final=%d", final);
2212
+ return(-1);
2213
+ }
2214
+
2215
+ /* push data to the next transform */
2216
+ inSize = xmlSecBufferGetSize(&(transform->inBuf));
2217
+ outSize = xmlSecBufferGetSize(&(transform->outBuf));
2218
+ if(inSize > 0) {
2219
+ finalData = 0;
2220
+ }
2221
+
2222
+ /* we don't want to puch too much */
2223
+ if(outSize > XMLSEC_TRANSFORM_BINARY_CHUNK) {
2224
+ outSize = XMLSEC_TRANSFORM_BINARY_CHUNK;
2225
+ finalData = 0;
2226
+ }
2227
+ if((transform->next != NULL) && ((outSize > 0) || (finalData != 0))) {
2228
+ ret = xmlSecTransformPushBin(transform->next,
2229
+ xmlSecBufferGetData(&(transform->outBuf)),
2230
+ outSize,
2231
+ finalData,
2232
+ transformCtx);
2233
+ if(ret < 0) {
2234
+ xmlSecError(XMLSEC_ERRORS_HERE,
2235
+ xmlSecErrorsSafeString(xmlSecTransformGetName(transform->next)),
2236
+ "xmlSecTransformPushBin",
2237
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
2238
+ "final=%d;outSize=%d", final, outSize);
2239
+ return(-1);
2240
+ }
2241
+ }
2242
+
2243
+ /* remove data anyway */
2244
+ if(outSize > 0) {
2245
+ ret = xmlSecBufferRemoveHead(&(transform->outBuf), outSize);
2246
+ if(ret < 0) {
2247
+ xmlSecError(XMLSEC_ERRORS_HERE,
2248
+ xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
2249
+ "xmlSecBufferAppend",
2250
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
2251
+ "size=%d", outSize);
2252
+ return(-1);
2253
+ }
2254
+ }
2255
+ } while((dataSize > 0) || (outSize > 0));
2256
+
2257
+ return(0);
2258
+ }
2259
+
2260
+ /**
2261
+ * xmlSecTransformDefaultPopBin:
2262
+ * @transform: the pointer to transform object.
2263
+ * @data: the buffer to store result data.
2264
+ * @maxDataSize: the size of the buffer #data.
2265
+ * @dataSize: the pointer to returned data size.
2266
+ * @transformCtx: the pointer to transform context object.
2267
+ *
2268
+ * Pops data from previous transform in the chain, processes data by calling
2269
+ * transform's execute method and returns result in the @data buffer. The
2270
+ * size of returned data is placed in the @dataSize.
2271
+ *
2272
+ * Returns: 0 on success or a negative value if an error occurs.
2273
+ */
2274
+ int
2275
+ xmlSecTransformDefaultPopBin(xmlSecTransformPtr transform, xmlSecByte* data,
2276
+ xmlSecSize maxDataSize, xmlSecSize* dataSize, xmlSecTransformCtxPtr transformCtx) {
2277
+ xmlSecSize outSize;
2278
+ int final = 0;
2279
+ int ret;
2280
+
2281
+ xmlSecAssert2(xmlSecTransformIsValid(transform), -1);
2282
+ xmlSecAssert2(data != NULL, -1);
2283
+ xmlSecAssert2(dataSize != NULL, -1);
2284
+ xmlSecAssert2(transformCtx != NULL, -1);
2285
+
2286
+ while((xmlSecBufferGetSize(&(transform->outBuf)) == 0) && (final == 0)) {
2287
+ /* read data from previous transform if exist */
2288
+ if(transform->prev != NULL) {
2289
+ xmlSecSize inSize, chunkSize;
2290
+
2291
+ inSize = xmlSecBufferGetSize(&(transform->inBuf));
2292
+ chunkSize = XMLSEC_TRANSFORM_BINARY_CHUNK;
2293
+
2294
+ /* ensure that we have space for at least one data chunk */
2295
+ ret = xmlSecBufferSetMaxSize(&(transform->inBuf), inSize + chunkSize);
2296
+ if(ret < 0) {
2297
+ xmlSecError(XMLSEC_ERRORS_HERE,
2298
+ xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
2299
+ "xmlSecBufferSetMaxSize",
2300
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
2301
+ "size=%d", inSize + chunkSize);
2302
+ return(-1);
2303
+ }
2304
+
2305
+ /* get data from previous transform */
2306
+ ret = xmlSecTransformPopBin(transform->prev,
2307
+ xmlSecBufferGetData(&(transform->inBuf)) + inSize,
2308
+ chunkSize, &chunkSize, transformCtx);
2309
+ if(ret < 0) {
2310
+ xmlSecError(XMLSEC_ERRORS_HERE,
2311
+ xmlSecErrorsSafeString(xmlSecTransformGetName(transform->prev)),
2312
+ "xmlSecTransformPopBin",
2313
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
2314
+ XMLSEC_ERRORS_NO_MESSAGE);
2315
+ return(-1);
2316
+ }
2317
+
2318
+ /* adjust our size if needed */
2319
+ if(chunkSize > 0) {
2320
+ ret = xmlSecBufferSetSize(&(transform->inBuf), inSize + chunkSize);
2321
+ if(ret < 0) {
2322
+ xmlSecError(XMLSEC_ERRORS_HERE,
2323
+ xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
2324
+ "xmlSecBufferSetSize",
2325
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
2326
+ "size=%d", inSize + chunkSize);
2327
+ return(-1);
2328
+ }
2329
+ final = 0; /* the previous transform returned some data..*/
2330
+ } else {
2331
+ final = 1; /* no data returned from previous transform, we are done */
2332
+ }
2333
+ } else {
2334
+ final = 1; /* no previous transform, we are "permanently final" */
2335
+ }
2336
+
2337
+ /* execute our transform */
2338
+ ret = xmlSecTransformExecute(transform, final, transformCtx);
2339
+ if(ret < 0) {
2340
+ xmlSecError(XMLSEC_ERRORS_HERE,
2341
+ xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
2342
+ "xmlSecTransformExecute",
2343
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
2344
+ XMLSEC_ERRORS_NO_MESSAGE);
2345
+ return(-1);
2346
+ }
2347
+ }
2348
+
2349
+ /* copy result (if any) */
2350
+ outSize = xmlSecBufferGetSize(&(transform->outBuf));
2351
+ if(outSize > maxDataSize) {
2352
+ outSize = maxDataSize;
2353
+ }
2354
+
2355
+ /* we don't want to put too much */
2356
+ if(outSize > XMLSEC_TRANSFORM_BINARY_CHUNK) {
2357
+ outSize = XMLSEC_TRANSFORM_BINARY_CHUNK;
2358
+ }
2359
+ if(outSize > 0) {
2360
+ xmlSecAssert2(xmlSecBufferGetData(&(transform->outBuf)), -1);
2361
+
2362
+ memcpy(data, xmlSecBufferGetData(&(transform->outBuf)), outSize);
2363
+
2364
+ ret = xmlSecBufferRemoveHead(&(transform->outBuf), outSize);
2365
+ if(ret < 0) {
2366
+ xmlSecError(XMLSEC_ERRORS_HERE,
2367
+ xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
2368
+ "xmlSecBufferRemoveHead",
2369
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
2370
+ "size=%d", outSize);
2371
+ return(-1);
2372
+ }
2373
+ }
2374
+
2375
+ /* set the result size */
2376
+ (*dataSize) = outSize;
2377
+ return(0);
2378
+ }
2379
+
2380
+ /**
2381
+ * xmlSecTransformDefaultPushXml:
2382
+ * @transform: the pointer to transform object.
2383
+ * @nodes: the input nodes.
2384
+ * @transformCtx: the pointer to transform context object.
2385
+ *
2386
+ * Processes @nodes by calling transform's execute method and pushes
2387
+ * result to the next transform in the chain.
2388
+ *
2389
+ * Returns: 0 on success or a negative value if an error occurs.
2390
+ */
2391
+ int
2392
+ xmlSecTransformDefaultPushXml(xmlSecTransformPtr transform, xmlSecNodeSetPtr nodes,
2393
+ xmlSecTransformCtxPtr transformCtx) {
2394
+ int ret;
2395
+
2396
+ xmlSecAssert2(xmlSecTransformIsValid(transform), -1);
2397
+ xmlSecAssert2(transform->inNodes == NULL, -1);
2398
+ xmlSecAssert2(transform->outNodes == NULL, -1);
2399
+ xmlSecAssert2(transformCtx != NULL, -1);
2400
+
2401
+ /* execute our transform */
2402
+ transform->inNodes = nodes;
2403
+ ret = xmlSecTransformExecute(transform, 1, transformCtx);
2404
+ if(ret < 0) {
2405
+ xmlSecError(XMLSEC_ERRORS_HERE,
2406
+ xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
2407
+ "xmlSecTransformExecute",
2408
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
2409
+ XMLSEC_ERRORS_NO_MESSAGE);
2410
+ return(-1);
2411
+ }
2412
+
2413
+ /* push result to the next transform (if exist) */
2414
+ if(transform->next != NULL) {
2415
+ ret = xmlSecTransformPushXml(transform->next, transform->outNodes, transformCtx);
2416
+ if(ret < 0) {
2417
+ xmlSecError(XMLSEC_ERRORS_HERE,
2418
+ xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
2419
+ "xmlSecTransformPushXml",
2420
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
2421
+ XMLSEC_ERRORS_NO_MESSAGE);
2422
+ return(-1);
2423
+ }
2424
+ }
2425
+ return(0);
2426
+ }
2427
+
2428
+ /**
2429
+ * xmlSecTransformDefaultPopXml:
2430
+ * @transform: the pointer to transform object.
2431
+ * @nodes: the pointer to store popinter to result nodes.
2432
+ * @transformCtx: the pointer to transform context object.
2433
+ *
2434
+ * Pops data from previous transform in the chain, processes the data
2435
+ * by calling transform's execute method and returns result in @nodes.
2436
+ *
2437
+ * Returns: 0 on success or a negative value if an error occurs.
2438
+ */
2439
+ int
2440
+ xmlSecTransformDefaultPopXml(xmlSecTransformPtr transform, xmlSecNodeSetPtr* nodes,
2441
+ xmlSecTransformCtxPtr transformCtx) {
2442
+ int ret;
2443
+
2444
+ xmlSecAssert2(xmlSecTransformIsValid(transform), -1);
2445
+ xmlSecAssert2(transform->inNodes == NULL, -1);
2446
+ xmlSecAssert2(transform->outNodes == NULL, -1);
2447
+ xmlSecAssert2(transformCtx != NULL, -1);
2448
+
2449
+ /* pop result from the prev transform (if exist) */
2450
+ if(transform->prev != NULL) {
2451
+ ret = xmlSecTransformPopXml(transform->prev, &(transform->inNodes), transformCtx);
2452
+ if(ret < 0) {
2453
+ xmlSecError(XMLSEC_ERRORS_HERE,
2454
+ xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
2455
+ "xmlSecTransformPopXml",
2456
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
2457
+ XMLSEC_ERRORS_NO_MESSAGE);
2458
+ return(-1);
2459
+ }
2460
+ }
2461
+
2462
+ /* execute our transform */
2463
+ ret = xmlSecTransformExecute(transform, 1, transformCtx);
2464
+ if(ret < 0) {
2465
+ xmlSecError(XMLSEC_ERRORS_HERE,
2466
+ xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
2467
+ "xmlSecTransformExecute",
2468
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
2469
+ XMLSEC_ERRORS_NO_MESSAGE);
2470
+ return(-1);
2471
+ }
2472
+
2473
+ /* return result if requested */
2474
+ if(nodes != NULL) {
2475
+ (*nodes) = transform->outNodes;
2476
+ }
2477
+
2478
+ return(0);
2479
+ }
2480
+
2481
+ /***********************************************************************
2482
+ *
2483
+ * Transform Ids list
2484
+ *
2485
+ **********************************************************************/
2486
+ static xmlSecPtrListKlass xmlSecTransformIdListKlass = {
2487
+ BAD_CAST "transform-ids-list",
2488
+ NULL, /* xmlSecPtrDuplicateItemMethod duplicateItem; */
2489
+ NULL, /* xmlSecPtrDestroyItemMethod destroyItem; */
2490
+ NULL, /* xmlSecPtrDebugDumpItemMethod debugDumpItem; */
2491
+ NULL, /* xmlSecPtrDebugDumpItemMethod debugXmlDumpItem; */
2492
+ };
2493
+
2494
+ /**
2495
+ * xmlSecTransformIdListGetKlass:
2496
+ *
2497
+ * The transform id list klass.
2498
+ *
2499
+ * Returns: pointer to the transform id list klass.
2500
+ */
2501
+ xmlSecPtrListId
2502
+ xmlSecTransformIdListGetKlass(void) {
2503
+ return(&xmlSecTransformIdListKlass);
2504
+ }
2505
+
2506
+ /**
2507
+ * xmlSecTransformIdListFind:
2508
+ * @list: the pointer to transform ids list.
2509
+ * @transformId: the transform klass.
2510
+ *
2511
+ * Lookups @dataId in @list.
2512
+ *
2513
+ * Returns: 1 if @dataId is found in the @list, 0 if not and a negative
2514
+ * value if an error occurs.
2515
+ */
2516
+ int
2517
+ xmlSecTransformIdListFind(xmlSecPtrListPtr list, xmlSecTransformId transformId) {
2518
+ xmlSecSize i, size;
2519
+
2520
+ xmlSecAssert2(xmlSecPtrListCheckId(list, xmlSecTransformIdListId), -1);
2521
+ xmlSecAssert2(transformId != NULL, -1);
2522
+
2523
+ size = xmlSecPtrListGetSize(list);
2524
+ for(i = 0; i < size; ++i) {
2525
+ if((xmlSecTransformId)xmlSecPtrListGetItem(list, i) == transformId) {
2526
+ return(1);
2527
+ }
2528
+ }
2529
+ return(0);
2530
+ }
2531
+
2532
+ /**
2533
+ * xmlSecTransformIdListFindByHref:
2534
+ * @list: the pointer to transform ids list.
2535
+ * @href: the desired transform klass href.
2536
+ * @usage: the desired transform usage.
2537
+ *
2538
+ * Lookups data klass in the list with given @href and @usage in @list.
2539
+ *
2540
+ * Returns: transform klass is found and NULL otherwise.
2541
+ */
2542
+ xmlSecTransformId
2543
+ xmlSecTransformIdListFindByHref(xmlSecPtrListPtr list, const xmlChar* href,
2544
+ xmlSecTransformUsage usage) {
2545
+ xmlSecTransformId transformId;
2546
+ xmlSecSize i, size;
2547
+
2548
+ xmlSecAssert2(xmlSecPtrListCheckId(list, xmlSecTransformIdListId), xmlSecTransformIdUnknown);
2549
+ xmlSecAssert2(href != NULL, xmlSecTransformIdUnknown);
2550
+
2551
+ size = xmlSecPtrListGetSize(list);
2552
+ for(i = 0; i < size; ++i) {
2553
+ transformId = (xmlSecTransformId)xmlSecPtrListGetItem(list, i);
2554
+ xmlSecAssert2(transformId != xmlSecTransformIdUnknown, xmlSecTransformIdUnknown);
2555
+
2556
+ if(((usage & transformId->usage) != 0) && (transformId->href != NULL) &&
2557
+ xmlStrEqual(href, transformId->href)) {
2558
+ return(transformId);
2559
+ }
2560
+ }
2561
+ return(xmlSecTransformIdUnknown);
2562
+ }
2563
+
2564
+ /**
2565
+ * xmlSecTransformIdListFindByName:
2566
+ * @list: the pointer to transform ids list.
2567
+ * @name: the desired transform klass name.
2568
+ * @usage: the desired transform usage.
2569
+ *
2570
+ * Lookups data klass in the list with given @name and @usage in @list.
2571
+ *
2572
+ * Returns: transform klass is found and NULL otherwise.
2573
+ */
2574
+ xmlSecTransformId
2575
+ xmlSecTransformIdListFindByName(xmlSecPtrListPtr list, const xmlChar* name,
2576
+ xmlSecTransformUsage usage) {
2577
+ xmlSecTransformId transformId;
2578
+ xmlSecSize i, size;
2579
+
2580
+ xmlSecAssert2(xmlSecPtrListCheckId(list, xmlSecTransformIdListId), xmlSecTransformIdUnknown);
2581
+ xmlSecAssert2(name != NULL, xmlSecTransformIdUnknown);
2582
+
2583
+ size = xmlSecPtrListGetSize(list);
2584
+ for(i = 0; i < size; ++i) {
2585
+ transformId = (xmlSecTransformId)xmlSecPtrListGetItem(list, i);
2586
+ xmlSecAssert2(transformId != xmlSecTransformIdUnknown, xmlSecTransformIdUnknown);
2587
+
2588
+ if(((usage & transformId->usage) != 0) && (transformId->name != NULL) &&
2589
+ xmlStrEqual(name, BAD_CAST transformId->name)) {
2590
+
2591
+ return(transformId);
2592
+ }
2593
+ }
2594
+ return(xmlSecTransformIdUnknown);
2595
+ }
2596
+
2597
+ /**
2598
+ * xmlSecTransformIdListDebugDump:
2599
+ * @list: the pointer to transform ids list.
2600
+ * @output: the pointer to output FILE.
2601
+ *
2602
+ * Prints binary transform debug information to @output.
2603
+ */
2604
+ void
2605
+ xmlSecTransformIdListDebugDump(xmlSecPtrListPtr list, FILE* output) {
2606
+ xmlSecTransformId transformId;
2607
+ xmlSecSize i, size;
2608
+
2609
+ xmlSecAssert(xmlSecPtrListCheckId(list, xmlSecTransformIdListId));
2610
+ xmlSecAssert(output != NULL);
2611
+
2612
+ size = xmlSecPtrListGetSize(list);
2613
+ for(i = 0; i < size; ++i) {
2614
+ transformId = (xmlSecTransformId)xmlSecPtrListGetItem(list, i);
2615
+ xmlSecAssert(transformId != NULL);
2616
+ xmlSecAssert(transformId->name != NULL);
2617
+
2618
+ if(i > 0) {
2619
+ fprintf(output, ",\"%s\"", transformId->name);
2620
+ } else {
2621
+ fprintf(output, "\"%s\"", transformId->name);
2622
+ }
2623
+ }
2624
+ fprintf(output, "\n");
2625
+ }
2626
+
2627
+ /**
2628
+ * xmlSecTransformIdListDebugXmlDump:
2629
+ * @list: the pointer to transform ids list.
2630
+ * @output: the pointer to output FILE.
2631
+ *
2632
+ * Prints binary transform debug information to @output in XML format.
2633
+ */
2634
+ void
2635
+ xmlSecTransformIdListDebugXmlDump(xmlSecPtrListPtr list, FILE* output) {
2636
+ xmlSecTransformId transformId;
2637
+ xmlSecSize i, size;
2638
+
2639
+ xmlSecAssert(xmlSecPtrListCheckId(list, xmlSecTransformIdListId));
2640
+ xmlSecAssert(output != NULL);
2641
+
2642
+ fprintf(output, "<TransformIdsList>\n");
2643
+ size = xmlSecPtrListGetSize(list);
2644
+ for(i = 0; i < size; ++i) {
2645
+ transformId = (xmlSecTransformId)xmlSecPtrListGetItem(list, i);
2646
+ xmlSecAssert(transformId != NULL);
2647
+ xmlSecAssert(transformId->name != NULL);
2648
+
2649
+ fprintf(output, "<TransformId name=\"");
2650
+ xmlSecPrintXmlString(output, transformId->name);
2651
+ fprintf(output, "\" />");
2652
+ }
2653
+ fprintf(output, "</TransformIdsList>\n");
2654
+ }
2655
+
2656
+ /************************************************************************
2657
+ *
2658
+ * IO buffers for transforms
2659
+ *
2660
+ ************************************************************************/
2661
+ typedef struct _xmlSecTransformIOBuffer xmlSecTransformIOBuffer,
2662
+ *xmlSecTransformIOBufferPtr;
2663
+ typedef enum {
2664
+ xmlSecTransformIOBufferModeRead,
2665
+ xmlSecTransformIOBufferModeWrite
2666
+ } xmlSecTransformIOBufferMode;
2667
+
2668
+ struct _xmlSecTransformIOBuffer {
2669
+ xmlSecTransformIOBufferMode mode;
2670
+ xmlSecTransformPtr transform;
2671
+ xmlSecTransformCtxPtr transformCtx;
2672
+ };
2673
+
2674
+ static xmlSecTransformIOBufferPtr xmlSecTransformIOBufferCreate (xmlSecTransformIOBufferMode mode,
2675
+ xmlSecTransformPtr transform,
2676
+ xmlSecTransformCtxPtr transformCtx);
2677
+ static void xmlSecTransformIOBufferDestroy (xmlSecTransformIOBufferPtr buffer);
2678
+ static int xmlSecTransformIOBufferRead (xmlSecTransformIOBufferPtr buffer,
2679
+ xmlSecByte *buf,
2680
+ xmlSecSize size);
2681
+ static int xmlSecTransformIOBufferWrite (xmlSecTransformIOBufferPtr buffer,
2682
+ const xmlSecByte *buf,
2683
+ xmlSecSize size);
2684
+ static int xmlSecTransformIOBufferClose (xmlSecTransformIOBufferPtr buffer);
2685
+
2686
+
2687
+ /**
2688
+ * xmlSecTransformCreateOutputBuffer:
2689
+ * @transform: the pointer to transform.
2690
+ * @transformCtx: the pointer to transform context object.
2691
+ *
2692
+ * Creates output buffer to write data to @transform.
2693
+ *
2694
+ * Returns: pointer to new output buffer or NULL if an error occurs.
2695
+ */
2696
+ xmlOutputBufferPtr
2697
+ xmlSecTransformCreateOutputBuffer(xmlSecTransformPtr transform, xmlSecTransformCtxPtr transformCtx) {
2698
+ xmlSecTransformIOBufferPtr buffer;
2699
+ xmlSecTransformDataType type;
2700
+ xmlOutputBufferPtr output;
2701
+
2702
+ xmlSecAssert2(xmlSecTransformIsValid(transform), NULL);
2703
+ xmlSecAssert2(transformCtx != NULL, NULL);
2704
+
2705
+ /* check that we have binary push method for this transform */
2706
+ type = xmlSecTransformDefaultGetDataType(transform, xmlSecTransformModePush, transformCtx);
2707
+ if((type & xmlSecTransformDataTypeBin) == 0) {
2708
+ xmlSecError(XMLSEC_ERRORS_HERE,
2709
+ xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
2710
+ NULL,
2711
+ XMLSEC_ERRORS_R_INVALID_TRANSFORM,
2712
+ "push binary data not supported");
2713
+ return(NULL);
2714
+ }
2715
+
2716
+ buffer = xmlSecTransformIOBufferCreate(xmlSecTransformIOBufferModeWrite, transform, transformCtx);
2717
+ if(buffer == NULL) {
2718
+ xmlSecError(XMLSEC_ERRORS_HERE,
2719
+ xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
2720
+ "xmlSecTransformIOBufferCreate",
2721
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
2722
+ XMLSEC_ERRORS_NO_MESSAGE);
2723
+ return(NULL);
2724
+ }
2725
+
2726
+ output = xmlOutputBufferCreateIO((xmlOutputWriteCallback)xmlSecTransformIOBufferWrite,
2727
+ (xmlOutputCloseCallback)xmlSecTransformIOBufferClose,
2728
+ buffer,
2729
+ NULL);
2730
+ if(output == NULL) {
2731
+ xmlSecError(XMLSEC_ERRORS_HERE,
2732
+ xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
2733
+ "xmlOutputBufferCreateIO",
2734
+ XMLSEC_ERRORS_R_XML_FAILED,
2735
+ XMLSEC_ERRORS_NO_MESSAGE);
2736
+ xmlSecTransformIOBufferDestroy(buffer);
2737
+ return(NULL);
2738
+ }
2739
+
2740
+ return(output);
2741
+ }
2742
+
2743
+ /**
2744
+ * xmlSecTransformCreateInputBuffer:
2745
+ * @transform: the pointer to transform.
2746
+ * @transformCtx: the pointer to transform context object.
2747
+ *
2748
+ * Creates input buffer to read data from @transform.
2749
+ *
2750
+ * Returns: pointer to new input buffer or NULL if an error occurs.
2751
+ */
2752
+ xmlParserInputBufferPtr
2753
+ xmlSecTransformCreateInputBuffer(xmlSecTransformPtr transform, xmlSecTransformCtxPtr transformCtx) {
2754
+ xmlSecTransformIOBufferPtr buffer;
2755
+ xmlSecTransformDataType type;
2756
+ xmlParserInputBufferPtr input;
2757
+
2758
+ xmlSecAssert2(xmlSecTransformIsValid(transform), NULL);
2759
+ xmlSecAssert2(transformCtx != NULL, NULL);
2760
+
2761
+ /* check that we have binary pop method for this transform */
2762
+ type = xmlSecTransformDefaultGetDataType(transform, xmlSecTransformModePop, transformCtx);
2763
+ if((type & xmlSecTransformDataTypeBin) == 0) {
2764
+ xmlSecError(XMLSEC_ERRORS_HERE,
2765
+ xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
2766
+ NULL,
2767
+ XMLSEC_ERRORS_R_INVALID_TRANSFORM,
2768
+ "pop binary data not supported");
2769
+ return(NULL);
2770
+ }
2771
+
2772
+ buffer = xmlSecTransformIOBufferCreate(xmlSecTransformIOBufferModeRead, transform, transformCtx);
2773
+ if(buffer == NULL) {
2774
+ xmlSecError(XMLSEC_ERRORS_HERE,
2775
+ xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
2776
+ "xmlSecTransformIOBufferCreate",
2777
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
2778
+ XMLSEC_ERRORS_NO_MESSAGE);
2779
+ return(NULL);
2780
+ }
2781
+
2782
+ input = xmlParserInputBufferCreateIO((xmlInputReadCallback)xmlSecTransformIOBufferRead,
2783
+ (xmlInputCloseCallback)xmlSecTransformIOBufferClose,
2784
+ buffer,
2785
+ XML_CHAR_ENCODING_NONE);
2786
+ if(input == NULL) {
2787
+ xmlSecError(XMLSEC_ERRORS_HERE,
2788
+ xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
2789
+ "xmlParserInputBufferCreateIO",
2790
+ XMLSEC_ERRORS_R_XML_FAILED,
2791
+ XMLSEC_ERRORS_NO_MESSAGE);
2792
+ xmlSecTransformIOBufferDestroy(buffer);
2793
+ return(NULL);
2794
+ }
2795
+
2796
+ return(input);
2797
+ }
2798
+
2799
+ static xmlSecTransformIOBufferPtr
2800
+ xmlSecTransformIOBufferCreate(xmlSecTransformIOBufferMode mode, xmlSecTransformPtr transform,
2801
+ xmlSecTransformCtxPtr transformCtx) {
2802
+ xmlSecTransformIOBufferPtr buffer;
2803
+
2804
+ xmlSecAssert2(xmlSecTransformIsValid(transform), NULL);
2805
+ xmlSecAssert2(transformCtx != NULL, NULL);
2806
+
2807
+ buffer = (xmlSecTransformIOBufferPtr)xmlMalloc(sizeof(xmlSecTransformIOBuffer));
2808
+ if(buffer == NULL) {
2809
+ xmlSecError(XMLSEC_ERRORS_HERE,
2810
+ NULL,
2811
+ NULL,
2812
+ XMLSEC_ERRORS_R_MALLOC_FAILED,
2813
+ "size=%d", sizeof(xmlSecTransformIOBuffer));
2814
+ return(NULL);
2815
+ }
2816
+ memset(buffer, 0, sizeof(xmlSecTransformIOBuffer));
2817
+
2818
+ buffer->mode = mode;
2819
+ buffer->transform = transform;
2820
+ buffer->transformCtx = transformCtx;
2821
+
2822
+ return(buffer);
2823
+ }
2824
+
2825
+ static void
2826
+ xmlSecTransformIOBufferDestroy(xmlSecTransformIOBufferPtr buffer) {
2827
+ xmlSecAssert(buffer != NULL);
2828
+
2829
+ memset(buffer, 0, sizeof(xmlSecTransformIOBuffer));
2830
+ xmlFree(buffer);
2831
+ }
2832
+
2833
+ static int
2834
+ xmlSecTransformIOBufferRead(xmlSecTransformIOBufferPtr buffer,
2835
+ xmlSecByte *buf, xmlSecSize size) {
2836
+ int ret;
2837
+
2838
+ xmlSecAssert2(buffer != NULL, -1);
2839
+ xmlSecAssert2(buffer->mode == xmlSecTransformIOBufferModeRead, -1);
2840
+ xmlSecAssert2(xmlSecTransformIsValid(buffer->transform), -1);
2841
+ xmlSecAssert2(buffer->transformCtx != NULL, -1);
2842
+ xmlSecAssert2(buf != NULL, -1);
2843
+
2844
+ ret = xmlSecTransformPopBin(buffer->transform, buf, size, &size, buffer->transformCtx);
2845
+ if(ret < 0) {
2846
+ xmlSecError(XMLSEC_ERRORS_HERE,
2847
+ xmlSecErrorsSafeString(xmlSecTransformGetName(buffer->transform)),
2848
+ "xmlSecTransformPopBin",
2849
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
2850
+ XMLSEC_ERRORS_NO_MESSAGE);
2851
+ return(-1);
2852
+ }
2853
+ return(size);
2854
+ }
2855
+
2856
+ static int
2857
+ xmlSecTransformIOBufferWrite(xmlSecTransformIOBufferPtr buffer,
2858
+ const xmlSecByte *buf, xmlSecSize size) {
2859
+ int ret;
2860
+
2861
+ xmlSecAssert2(buffer != NULL, -1);
2862
+ xmlSecAssert2(buffer->mode == xmlSecTransformIOBufferModeWrite, -1);
2863
+ xmlSecAssert2(xmlSecTransformIsValid(buffer->transform), -1);
2864
+ xmlSecAssert2(buffer->transformCtx != NULL, -1);
2865
+ xmlSecAssert2(buf != NULL, -1);
2866
+
2867
+ ret = xmlSecTransformPushBin(buffer->transform, buf, size, 0, buffer->transformCtx);
2868
+ if(ret < 0) {
2869
+ xmlSecError(XMLSEC_ERRORS_HERE,
2870
+ xmlSecErrorsSafeString(xmlSecTransformGetName(buffer->transform)),
2871
+ "xmlSecTransformPushBin",
2872
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
2873
+ XMLSEC_ERRORS_NO_MESSAGE);
2874
+ return(-1);
2875
+ }
2876
+ return(size);
2877
+ }
2878
+
2879
+ static int
2880
+ xmlSecTransformIOBufferClose(xmlSecTransformIOBufferPtr buffer) {
2881
+ int ret;
2882
+
2883
+ xmlSecAssert2(buffer != NULL, -1);
2884
+ xmlSecAssert2(xmlSecTransformIsValid(buffer->transform), -1);
2885
+ xmlSecAssert2(buffer->transformCtx != NULL, -1);
2886
+
2887
+ /* need to flush write buffer before destroying */
2888
+ if(buffer->mode == xmlSecTransformIOBufferModeWrite) {
2889
+ ret = xmlSecTransformPushBin(buffer->transform, NULL, 0, 1, buffer->transformCtx);
2890
+ if(ret < 0) {
2891
+ xmlSecError(XMLSEC_ERRORS_HERE,
2892
+ xmlSecErrorsSafeString(xmlSecTransformGetName(buffer->transform)),
2893
+ "xmlSecTransformPushBin",
2894
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
2895
+ XMLSEC_ERRORS_NO_MESSAGE);
2896
+ return(-1);
2897
+ }
2898
+ }
2899
+
2900
+ xmlSecTransformIOBufferDestroy(buffer);
2901
+ return(0);
2902
+ }