xmlsec-shim 1.2.18.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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,39 @@
1
+ /*
2
+ * XML Security Library
3
+ *
4
+ * gcrypt/asn1.h: internal header only used during the compilation
5
+ *
6
+ * This is free software; see Copyright file in the source
7
+ * distribution for preciese wording.
8
+ *
9
+ * Copyright (C) 2010 Aleksey Sanin <aleksey@aleksey.com>
10
+ */
11
+ #ifndef __XMLSEC_GCRYPT_ASN1_H__
12
+ #define __XMLSEC_GCRYPT_ASN1_H__
13
+
14
+ #ifndef XMLSEC_PRIVATE
15
+ #error "gcrypt/asn1.h file contains private xmlsec-gcrypt definitions and should not be used outside xmlsec or xmlsec-<crypto> libraries"
16
+ #endif /* XMLSEC_PRIVATE */
17
+
18
+ #ifdef __cplusplus
19
+ extern "C" {
20
+ #endif /* __cplusplus */
21
+
22
+ enum xmlSecGCryptDerKeyType {
23
+ xmlSecGCryptDerKeyTypeAuto = 0,
24
+ xmlSecGCryptDerKeyTypePublicDsa,
25
+ xmlSecGCryptDerKeyTypePublicRsa,
26
+ xmlSecGCryptDerKeyTypePrivateDsa,
27
+ xmlSecGCryptDerKeyTypePrivateRsa
28
+ };
29
+
30
+ xmlSecKeyDataPtr xmlSecGCryptParseDer (const xmlSecByte * der,
31
+ xmlSecSize derlen,
32
+ enum xmlSecGCryptDerKeyType type);
33
+
34
+ #ifdef __cplusplus
35
+ }
36
+ #endif /* __cplusplus */
37
+
38
+
39
+ #endif /*__XMLSEC_GCRYPT_ASN1_H__ */
@@ -0,0 +1,1920 @@
1
+ /**
2
+ * XMLSec library
3
+ *
4
+ * This is free software; see Copyright file in the source
5
+ * distribution for preciese wording.
6
+ *
7
+ * Copyright (C) 2010 Aleksey Sanin <aleksey@aleksey.com>
8
+ */
9
+ #include "globals.h"
10
+
11
+ #include <string.h>
12
+
13
+ #include <gcrypt.h>
14
+
15
+ #include <xmlsec/xmlsec.h>
16
+ #include <xmlsec/xmltree.h>
17
+ #include <xmlsec/keys.h>
18
+ #include <xmlsec/base64.h>
19
+ #include <xmlsec/keyinfo.h>
20
+ #include <xmlsec/transforms.h>
21
+ #include <xmlsec/errors.h>
22
+
23
+ #include <xmlsec/gcrypt/crypto.h>
24
+
25
+ /**************************************************************************
26
+ *
27
+ * Helpers
28
+ *
29
+ *************************************************************************/
30
+ static gcry_sexp_t xmlSecGCryptAsymSExpDup (gcry_sexp_t sexp);
31
+
32
+
33
+ /**************************************************************************
34
+ *
35
+ * Internal GCrypt asym key CTX
36
+ *
37
+ *************************************************************************/
38
+ typedef struct _xmlSecGCryptAsymKeyDataCtx xmlSecGCryptAsymKeyDataCtx,
39
+ *xmlSecGCryptAsymKeyDataCtxPtr;
40
+ struct _xmlSecGCryptAsymKeyDataCtx {
41
+ gcry_sexp_t pub_key;
42
+ gcry_sexp_t priv_key;
43
+ };
44
+
45
+ /******************************************************************************
46
+ *
47
+ * Asym key (dsa/rsa)
48
+ *
49
+ * xmlSecGCryptAsymKeyDataCtx is located after xmlSecTransform
50
+ *
51
+ *****************************************************************************/
52
+ #define xmlSecGCryptAsymKeyDataSize \
53
+ (sizeof(xmlSecKeyData) + sizeof(xmlSecGCryptAsymKeyDataCtx))
54
+ #define xmlSecGCryptAsymKeyDataGetCtx(data) \
55
+ ((xmlSecGCryptAsymKeyDataCtxPtr)(((xmlSecByte*)(data)) + sizeof(xmlSecKeyData)))
56
+
57
+ static int xmlSecGCryptAsymKeyDataInitialize (xmlSecKeyDataPtr data);
58
+ static int xmlSecGCryptAsymKeyDataDuplicate (xmlSecKeyDataPtr dst,
59
+ xmlSecKeyDataPtr src);
60
+ static void xmlSecGCryptAsymKeyDataFinalize (xmlSecKeyDataPtr data);
61
+
62
+ static int xmlSecGCryptAsymKeyDataAdoptKey (xmlSecKeyDataPtr data,
63
+ gcry_sexp_t key_pair);
64
+ static int xmlSecGCryptAsymKeyDataAdoptKeyPair (xmlSecKeyDataPtr data,
65
+ gcry_sexp_t pub_key,
66
+ gcry_sexp_t priv_key);
67
+ static gcry_sexp_t xmlSecGCryptAsymKeyDataGetPublicKey (xmlSecKeyDataPtr data);
68
+ static gcry_sexp_t xmlSecGCryptAsymKeyDataGetPrivateKey (xmlSecKeyDataPtr data);
69
+ static int xmlSecGCryptAsymKeyDataGenerate (xmlSecKeyDataPtr data,
70
+ const char * alg,
71
+ xmlSecSize key_size);
72
+ static xmlSecKeyDataType xmlSecGCryptAsymKeyDataGetType (xmlSecKeyDataPtr data);
73
+ static xmlSecSize xmlSecGCryptAsymKeyDataGetSize (xmlSecKeyDataPtr data);
74
+
75
+
76
+ static int
77
+ xmlSecGCryptAsymKeyDataInitialize(xmlSecKeyDataPtr data) {
78
+ xmlSecGCryptAsymKeyDataCtxPtr ctx;
79
+
80
+ xmlSecAssert2(xmlSecKeyDataIsValid(data), -1);
81
+ xmlSecAssert2(xmlSecKeyDataCheckSize(data, xmlSecGCryptAsymKeyDataSize), -1);
82
+
83
+ ctx = xmlSecGCryptAsymKeyDataGetCtx(data);
84
+ xmlSecAssert2(ctx != NULL, -1);
85
+
86
+ memset(ctx, 0, sizeof(xmlSecGCryptAsymKeyDataCtx));
87
+
88
+ return(0);
89
+ }
90
+
91
+ static int
92
+ xmlSecGCryptAsymKeyDataDuplicate(xmlSecKeyDataPtr dst, xmlSecKeyDataPtr src) {
93
+ xmlSecGCryptAsymKeyDataCtxPtr ctxDst;
94
+ xmlSecGCryptAsymKeyDataCtxPtr ctxSrc;
95
+
96
+ xmlSecAssert2(xmlSecKeyDataIsValid(dst), -1);
97
+ xmlSecAssert2(xmlSecKeyDataCheckSize(dst, xmlSecGCryptAsymKeyDataSize), -1);
98
+ xmlSecAssert2(xmlSecKeyDataIsValid(src), -1);
99
+ xmlSecAssert2(xmlSecKeyDataCheckSize(src, xmlSecGCryptAsymKeyDataSize), -1);
100
+
101
+ ctxDst = xmlSecGCryptAsymKeyDataGetCtx(dst);
102
+ xmlSecAssert2(ctxDst != NULL, -1);
103
+ xmlSecAssert2(ctxDst->pub_key == NULL, -1);
104
+ xmlSecAssert2(ctxDst->priv_key == NULL, -1);
105
+
106
+ ctxSrc = xmlSecGCryptAsymKeyDataGetCtx(src);
107
+ xmlSecAssert2(ctxSrc != NULL, -1);
108
+
109
+ if(ctxSrc->pub_key != NULL) {
110
+ ctxDst->pub_key = xmlSecGCryptAsymSExpDup(ctxSrc->pub_key);
111
+ if(ctxDst->pub_key == NULL) {
112
+ xmlSecError(XMLSEC_ERRORS_HERE,
113
+ xmlSecErrorsSafeString(xmlSecKeyDataGetName(dst)),
114
+ "xmlSecGCryptAsymSExpDup(pub_key)",
115
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
116
+ XMLSEC_ERRORS_NO_MESSAGE);
117
+ return(-1);
118
+ }
119
+ }
120
+
121
+ if(ctxSrc->priv_key != NULL) {
122
+ ctxDst->priv_key = xmlSecGCryptAsymSExpDup(ctxSrc->priv_key);
123
+ if(ctxDst->priv_key == NULL) {
124
+ xmlSecError(XMLSEC_ERRORS_HERE,
125
+ xmlSecErrorsSafeString(xmlSecKeyDataGetName(dst)),
126
+ "xmlSecGCryptAsymSExpDup(priv_key)",
127
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
128
+ XMLSEC_ERRORS_NO_MESSAGE);
129
+ return(-1);
130
+ }
131
+ }
132
+
133
+ return(0);
134
+ }
135
+
136
+ static void
137
+ xmlSecGCryptAsymKeyDataFinalize(xmlSecKeyDataPtr data) {
138
+ xmlSecGCryptAsymKeyDataCtxPtr ctx;
139
+
140
+ xmlSecAssert(xmlSecKeyDataIsValid(data));
141
+ xmlSecAssert(xmlSecKeyDataCheckSize(data, xmlSecGCryptAsymKeyDataSize));
142
+
143
+ ctx = xmlSecGCryptAsymKeyDataGetCtx(data);
144
+ xmlSecAssert(ctx != NULL);
145
+
146
+ if(ctx->pub_key != NULL) {
147
+ gcry_sexp_release(ctx->pub_key);
148
+ }
149
+ if(ctx->priv_key != NULL) {
150
+ gcry_sexp_release(ctx->priv_key);
151
+ }
152
+ memset(ctx, 0, sizeof(xmlSecGCryptAsymKeyDataCtx));
153
+ }
154
+
155
+ static int
156
+ xmlSecGCryptAsymKeyDataAdoptKey(xmlSecKeyDataPtr data, gcry_sexp_t key_pair) {
157
+ xmlSecGCryptAsymKeyDataCtxPtr ctx;
158
+ gcry_sexp_t pub_key = NULL;
159
+ gcry_sexp_t priv_key = NULL;
160
+ int res = -1;
161
+
162
+ xmlSecAssert2(xmlSecKeyDataIsValid(data), -1);
163
+ xmlSecAssert2(xmlSecKeyDataCheckSize(data, xmlSecGCryptAsymKeyDataSize), -1);
164
+ xmlSecAssert2(key_pair != NULL, -1);
165
+
166
+ ctx = xmlSecGCryptAsymKeyDataGetCtx(data);
167
+ xmlSecAssert2(ctx != NULL, -1);
168
+
169
+ /* split the key pair, public part should be always present, private might
170
+ not be present */
171
+ pub_key = gcry_sexp_find_token(key_pair, "public-key", 0);
172
+ if(pub_key == NULL) {
173
+ xmlSecError(XMLSEC_ERRORS_HERE,
174
+ NULL,
175
+ "gcry_sexp_find_token(public-key)",
176
+ XMLSEC_ERRORS_R_CRYPTO_FAILED,
177
+ XMLSEC_ERRORS_NO_MESSAGE);
178
+ goto done;
179
+ }
180
+ priv_key = gcry_sexp_find_token(key_pair, "private-key", 0);
181
+
182
+ /* assign */
183
+ if(xmlSecGCryptAsymKeyDataAdoptKeyPair(data, pub_key, priv_key) < 0) {
184
+ xmlSecError(XMLSEC_ERRORS_HERE,
185
+ NULL,
186
+ "xmlSecGCryptAsymKeyDataAdoptKeyPair",
187
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
188
+ XMLSEC_ERRORS_NO_MESSAGE);
189
+ goto done;
190
+ }
191
+ pub_key = NULL; /* data owns it now */
192
+ priv_key = NULL; /* data owns it now */
193
+
194
+ /* success */
195
+ res = 0;
196
+
197
+ done:
198
+ if(pub_key != NULL) {
199
+ gcry_sexp_release(pub_key);
200
+ }
201
+
202
+ if(priv_key != NULL) {
203
+ gcry_sexp_release(priv_key);
204
+ }
205
+
206
+ /* done */
207
+ return(res);
208
+ }
209
+
210
+ static int
211
+ xmlSecGCryptAsymKeyDataAdoptKeyPair(xmlSecKeyDataPtr data, gcry_sexp_t pub_key, gcry_sexp_t priv_key) {
212
+ xmlSecGCryptAsymKeyDataCtxPtr ctx;
213
+
214
+ xmlSecAssert2(xmlSecKeyDataIsValid(data), -1);
215
+ xmlSecAssert2(xmlSecKeyDataCheckSize(data, xmlSecGCryptAsymKeyDataSize), -1);
216
+ xmlSecAssert2(pub_key != NULL, -1); /* public key should present always */
217
+ /*
218
+ aleksey - we don't set optional parameters for RSA keys (p, k, u) and
219
+ because of that we can't actually test the key
220
+
221
+ xmlSecAssert2(((priv_key == NULL) || (gcry_pk_testkey(priv_key) == GPG_ERR_NO_ERROR)), -1);
222
+ */
223
+
224
+ ctx = xmlSecGCryptAsymKeyDataGetCtx(data);
225
+ xmlSecAssert2(ctx != NULL, -1);
226
+
227
+ /* release prev values and assign new ones */
228
+ if(ctx->pub_key != NULL) {
229
+ gcry_sexp_release(ctx->pub_key);
230
+ }
231
+ if(ctx->priv_key != NULL) {
232
+ gcry_sexp_release(ctx->priv_key);
233
+ }
234
+
235
+ ctx->pub_key = pub_key;
236
+ ctx->priv_key = priv_key;
237
+
238
+ /* done */
239
+ return(0);
240
+ }
241
+
242
+ static gcry_sexp_t
243
+ xmlSecGCryptAsymKeyDataGetPublicKey(xmlSecKeyDataPtr data) {
244
+ xmlSecGCryptAsymKeyDataCtxPtr ctx;
245
+
246
+ xmlSecAssert2(xmlSecKeyDataIsValid(data), NULL);
247
+ xmlSecAssert2(xmlSecKeyDataCheckSize(data, xmlSecGCryptAsymKeyDataSize), NULL);
248
+
249
+ ctx = xmlSecGCryptAsymKeyDataGetCtx(data);
250
+ xmlSecAssert2(ctx != NULL, NULL);
251
+
252
+ return(ctx->pub_key);
253
+ }
254
+
255
+ static gcry_sexp_t
256
+ xmlSecGCryptAsymKeyDataGetPrivateKey(xmlSecKeyDataPtr data) {
257
+ xmlSecGCryptAsymKeyDataCtxPtr ctx;
258
+
259
+ xmlSecAssert2(xmlSecKeyDataIsValid(data), NULL);
260
+ xmlSecAssert2(xmlSecKeyDataCheckSize(data, xmlSecGCryptAsymKeyDataSize), NULL);
261
+
262
+ ctx = xmlSecGCryptAsymKeyDataGetCtx(data);
263
+ xmlSecAssert2(ctx != NULL, NULL);
264
+
265
+ return(ctx->priv_key);
266
+ }
267
+
268
+ static int
269
+ xmlSecGCryptAsymKeyDataGenerate(xmlSecKeyDataPtr data, const char * alg, xmlSecSize key_size) {
270
+ xmlSecGCryptAsymKeyDataCtxPtr ctx;
271
+ gcry_sexp_t key_spec = NULL;
272
+ gcry_sexp_t key_pair = NULL;
273
+ gcry_error_t err;
274
+ int ret;
275
+ int res = -1;
276
+
277
+ xmlSecAssert2(xmlSecKeyDataIsValid(data), -1);
278
+ xmlSecAssert2(xmlSecKeyDataCheckSize(data, xmlSecGCryptAsymKeyDataSize), -1);
279
+ xmlSecAssert2(alg != NULL, -1);
280
+ xmlSecAssert2(key_size > 0, -1);
281
+
282
+ ctx = xmlSecGCryptAsymKeyDataGetCtx(data);
283
+ xmlSecAssert2(ctx != NULL, -1);
284
+
285
+ err = gcry_sexp_build(&key_spec, NULL,
286
+ "(genkey (%s (nbits %d)(transient-key)))",
287
+ alg, (int)key_size);
288
+ if((err != GPG_ERR_NO_ERROR) || (key_spec == NULL)) {
289
+ xmlSecError(XMLSEC_ERRORS_HERE,
290
+ NULL,
291
+ "gcry_sexp_build(genkey)",
292
+ XMLSEC_ERRORS_R_CRYPTO_FAILED,
293
+ XMLSEC_GCRYPT_REPORT_ERROR(err));
294
+ goto done;
295
+ }
296
+
297
+ err = gcry_pk_genkey(&key_pair, key_spec);
298
+ if((err != GPG_ERR_NO_ERROR) || (key_pair == NULL)) {
299
+ xmlSecError(XMLSEC_ERRORS_HERE,
300
+ NULL,
301
+ "gcry_pk_genkey",
302
+ XMLSEC_ERRORS_R_CRYPTO_FAILED,
303
+ XMLSEC_GCRYPT_REPORT_ERROR(err));
304
+ goto done;
305
+ }
306
+
307
+ ret = xmlSecGCryptAsymKeyDataAdoptKey(data, key_pair);
308
+ if(ret < 0) {
309
+ xmlSecError(XMLSEC_ERRORS_HERE,
310
+ NULL,
311
+ "xmlSecGCryptAsymKeyDataAdopt",
312
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
313
+ "ret=%d", (int)ret);
314
+ goto done;
315
+ }
316
+ key_pair = NULL; /* now owned by data */
317
+
318
+ /* success */
319
+ res = 0;
320
+
321
+ done:
322
+ if(key_spec != NULL) {
323
+ gcry_sexp_release(key_spec);
324
+ }
325
+ if(key_pair != NULL) {
326
+ gcry_sexp_release(key_pair);
327
+ }
328
+
329
+ return(res);
330
+ }
331
+
332
+ static xmlSecKeyDataType
333
+ xmlSecGCryptAsymKeyDataGetType(xmlSecKeyDataPtr data) {
334
+ xmlSecGCryptAsymKeyDataCtxPtr ctx;
335
+
336
+ xmlSecAssert2(xmlSecKeyDataIsValid(data), xmlSecKeyDataTypeUnknown);
337
+ xmlSecAssert2(xmlSecKeyDataCheckSize(data, xmlSecGCryptAsymKeyDataSize), xmlSecKeyDataTypeUnknown);
338
+
339
+ ctx = xmlSecGCryptAsymKeyDataGetCtx(data);
340
+ xmlSecAssert2(ctx != NULL, xmlSecKeyDataTypeUnknown);
341
+
342
+ if((ctx->priv_key != NULL) && (ctx->pub_key != NULL)) {
343
+ return (xmlSecKeyDataTypePrivate | xmlSecKeyDataTypePublic);
344
+ } else if(ctx->pub_key != NULL) {
345
+ return (xmlSecKeyDataTypePublic);
346
+ }
347
+
348
+ return (xmlSecKeyDataTypeUnknown);
349
+ }
350
+
351
+ static xmlSecSize
352
+ xmlSecGCryptAsymKeyDataGetSize(xmlSecKeyDataPtr data) {
353
+ xmlSecGCryptAsymKeyDataCtxPtr ctx;
354
+
355
+ xmlSecAssert2(xmlSecKeyDataIsValid(data), xmlSecKeyDataTypeUnknown);
356
+ xmlSecAssert2(xmlSecKeyDataCheckSize(data, xmlSecGCryptAsymKeyDataSize), xmlSecKeyDataTypeUnknown);
357
+
358
+ ctx = xmlSecGCryptAsymKeyDataGetCtx(data);
359
+ xmlSecAssert2(ctx != NULL, 0);
360
+
361
+ /* use pub key since it is more often you have it than not */
362
+ return (ctx->pub_key != NULL) ? gcry_pk_get_nbits(ctx->pub_key) : 0;
363
+ }
364
+
365
+ /******************************************************************************
366
+ *
367
+ * helper functions
368
+ *
369
+ *****************************************************************************/
370
+ static gcry_sexp_t
371
+ xmlSecGCryptAsymSExpDup(gcry_sexp_t pKey) {
372
+ gcry_sexp_t res = NULL;
373
+ xmlSecByte *buf = NULL;
374
+ gcry_error_t err;
375
+ size_t size;
376
+
377
+ xmlSecAssert2(pKey != NULL, NULL);
378
+
379
+ size = gcry_sexp_sprint(pKey, GCRYSEXP_FMT_ADVANCED, NULL, 0);
380
+ if(size == 0) {
381
+ xmlSecError(XMLSEC_ERRORS_HERE,
382
+ NULL,
383
+ "gcry_sexp_sprint",
384
+ XMLSEC_ERRORS_R_CRYPTO_FAILED,
385
+ XMLSEC_ERRORS_NO_MESSAGE);
386
+ goto done;
387
+ }
388
+
389
+ buf = (xmlSecByte *)xmlMalloc(size);
390
+ if(buf == NULL) {
391
+ xmlSecError(XMLSEC_ERRORS_HERE,
392
+ NULL,
393
+ "xmlMalloc",
394
+ XMLSEC_ERRORS_R_MALLOC_FAILED,
395
+ "size=%d", (int)size);
396
+ goto done;
397
+ }
398
+
399
+ size = gcry_sexp_sprint(pKey, GCRYSEXP_FMT_ADVANCED, buf, size);
400
+ if(size == 0) {
401
+ xmlSecError(XMLSEC_ERRORS_HERE,
402
+ NULL,
403
+ "gcry_sexp_sprint",
404
+ XMLSEC_ERRORS_R_CRYPTO_FAILED,
405
+ "size=%d", (int)size);
406
+ goto done;
407
+ }
408
+
409
+ err = gcry_sexp_new(&res, buf, size, 1);
410
+ if((err != GPG_ERR_NO_ERROR) || (res == NULL)) {
411
+ xmlSecError(XMLSEC_ERRORS_HERE,
412
+ NULL,
413
+ "gcry_sexp_new",
414
+ XMLSEC_ERRORS_R_CRYPTO_FAILED,
415
+ XMLSEC_GCRYPT_REPORT_ERROR(err));
416
+ goto done;
417
+ }
418
+
419
+ done:
420
+ if(buf != NULL) {
421
+ xmlFree(buf);
422
+ }
423
+ return (res);
424
+ }
425
+
426
+ /**
427
+ * xmlSecGCryptNodeGetMpiValue:
428
+ * @cur: the poitner to an XML node.
429
+ *
430
+ * Converts the node content from CryptoBinary format
431
+ * (http://www.w3.org/TR/xmldsig-core/#sec-CryptoBinary)
432
+ * to a BIGNUM. If no BIGNUM buffer provided then a new
433
+ * BIGNUM is created (caller is responsible for freeing it).
434
+ *
435
+ * Returns: a pointer to MPI produced from CryptoBinary string
436
+ * or NULL if an error occurs.
437
+ */
438
+ static gcry_mpi_t
439
+ xmlSecGCryptNodeGetMpiValue(const xmlNodePtr cur) {
440
+ xmlSecBuffer buf;
441
+ gcry_mpi_t res = NULL;
442
+ gcry_error_t err;
443
+ int ret;
444
+
445
+ xmlSecAssert2(cur != NULL, NULL);
446
+
447
+ ret = xmlSecBufferInitialize(&buf, 128);
448
+ if(ret < 0) {
449
+ xmlSecError(XMLSEC_ERRORS_HERE,
450
+ NULL,
451
+ "xmlSecBufferInitialize",
452
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
453
+ XMLSEC_ERRORS_NO_MESSAGE);
454
+ return(NULL);
455
+ }
456
+
457
+ ret = xmlSecBufferBase64NodeContentRead(&buf, cur);
458
+ if(ret < 0) {
459
+ xmlSecError(XMLSEC_ERRORS_HERE,
460
+ NULL,
461
+ "xmlSecBufferBase64NodeContentRead",
462
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
463
+ XMLSEC_ERRORS_NO_MESSAGE);
464
+ xmlSecBufferFinalize(&buf);
465
+ return(NULL);
466
+ }
467
+
468
+ err = gcry_mpi_scan(&res, GCRYMPI_FMT_USG,
469
+ xmlSecBufferGetData(&buf),
470
+ xmlSecBufferGetSize(&buf),
471
+ NULL);
472
+ if((err != GPG_ERR_NO_ERROR) || (res == NULL)) {
473
+ xmlSecError(XMLSEC_ERRORS_HERE,
474
+ NULL,
475
+ "gcry_mpi_scan",
476
+ XMLSEC_ERRORS_R_CRYPTO_FAILED,
477
+ XMLSEC_GCRYPT_REPORT_ERROR(err));
478
+ xmlSecBufferFinalize(&buf);
479
+ return(NULL);
480
+ }
481
+
482
+ /* done */
483
+ xmlSecBufferFinalize(&buf);
484
+ return(res);
485
+ }
486
+
487
+ /**
488
+ * xmlSecGCryptNodeSetMpiValue:
489
+ * @cur: the pointer to an XML node.
490
+ * @a: the mpi value
491
+ * @addLineBreaks: if the flag is equal to 1 then
492
+ * linebreaks will be added before and after
493
+ * new buffer content.
494
+ *
495
+ * Converts MPI to CryptoBinary string
496
+ * (http://www.w3.org/TR/xmldsig-core/#sec-CryptoBinary)
497
+ * and sets it as the content of the given node. If the
498
+ * addLineBreaks is set then line breaks are added
499
+ * before and after the CryptoBinary string.
500
+ *
501
+ * Returns: 0 on success or -1 otherwise.
502
+ */
503
+ static int
504
+ xmlSecGCryptNodeSetMpiValue(xmlNodePtr cur, const gcry_mpi_t a, int addLineBreaks) {
505
+ xmlSecBuffer buf;
506
+ gcry_error_t err;
507
+ size_t written = 0;
508
+ int ret;
509
+
510
+ xmlSecAssert2(a != NULL, -1);
511
+ xmlSecAssert2(cur != NULL, -1);
512
+
513
+ written = 0;
514
+ err = gcry_mpi_print(GCRYMPI_FMT_USG, NULL, 0, &written, a);
515
+ if((err != GPG_ERR_NO_ERROR) || (written == 0)) {
516
+ xmlSecError(XMLSEC_ERRORS_HERE,
517
+ NULL,
518
+ "gcry_mpi_print",
519
+ XMLSEC_ERRORS_R_CRYPTO_FAILED,
520
+ XMLSEC_GCRYPT_REPORT_ERROR(err));
521
+ return(-1);
522
+ }
523
+
524
+ ret = xmlSecBufferInitialize(&buf, written + 1);
525
+ if(ret < 0) {
526
+ xmlSecError(XMLSEC_ERRORS_HERE,
527
+ NULL,
528
+ "xmlSecBufferInitialize",
529
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
530
+ "size=%d", (int)written + 1);
531
+ return(-1);
532
+ }
533
+
534
+ written = 0;
535
+ err = gcry_mpi_print(GCRYMPI_FMT_USG,
536
+ xmlSecBufferGetData(&buf),
537
+ xmlSecBufferGetMaxSize(&buf),
538
+ &written, a);
539
+ if((err != GPG_ERR_NO_ERROR) || (written == 0)) {
540
+ xmlSecError(XMLSEC_ERRORS_HERE,
541
+ NULL,
542
+ "gcry_mpi_print",
543
+ XMLSEC_ERRORS_R_CRYPTO_FAILED,
544
+ XMLSEC_GCRYPT_REPORT_ERROR(err));
545
+ xmlSecBufferFinalize(&buf);
546
+ return(-1);
547
+ }
548
+
549
+ ret = xmlSecBufferSetSize(&buf, written);
550
+ if(ret < 0) {
551
+ xmlSecError(XMLSEC_ERRORS_HERE,
552
+ NULL,
553
+ "xmlSecBufferSetSize",
554
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
555
+ "written=%d", (int)written);
556
+ xmlSecBufferFinalize(&buf);
557
+ return(-1);
558
+ }
559
+
560
+ if(addLineBreaks) {
561
+ xmlNodeSetContent(cur, xmlSecStringCR);
562
+ } else {
563
+ xmlNodeSetContent(cur, xmlSecStringEmpty);
564
+ }
565
+
566
+ ret = xmlSecBufferBase64NodeContentWrite(&buf, cur, xmlSecBase64GetDefaultLineSize());
567
+ if(ret < 0) {
568
+ xmlSecError(XMLSEC_ERRORS_HERE,
569
+ NULL,
570
+ "xmlSecBufferBase64NodeContentWrite",
571
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
572
+ XMLSEC_ERRORS_NO_MESSAGE);
573
+ xmlSecBufferFinalize(&buf);
574
+ return(-1);
575
+ }
576
+
577
+ if(addLineBreaks) {
578
+ xmlNodeAddContent(cur, xmlSecStringCR);
579
+ }
580
+
581
+ xmlSecBufferFinalize(&buf);
582
+ return(0);
583
+ }
584
+
585
+ /**
586
+ * xmlSecGCryptNodeSetSExpTokValue:
587
+ * @cur: the pointer to an XML node.
588
+ * @sexp: the sexp
589
+ * @tok: the token
590
+ * @addLineBreaks: if the flag is equal to 1 then
591
+ * linebreaks will be added before and after
592
+ * new buffer content.
593
+ *
594
+ * Converts MPI to CryptoBinary string
595
+ * (http://www.w3.org/TR/xmldsig-core/#sec-CryptoBinary)
596
+ * and sets it as the content of the given node. If the
597
+ * addLineBreaks is set then line breaks are added
598
+ * before and after the CryptoBinary string.
599
+ *
600
+ * Returns: 0 on success or -1 otherwise.
601
+ */
602
+ static int
603
+ xmlSecGCryptNodeSetSExpTokValue(xmlNodePtr cur, const gcry_sexp_t sexp,
604
+ const char * tok, int addLineBreaks)
605
+ {
606
+ gcry_sexp_t val = NULL;
607
+ gcry_mpi_t mpi = NULL;
608
+ int res = -1;
609
+
610
+ xmlSecAssert2(cur != NULL, -1);
611
+ xmlSecAssert2(sexp != NULL, -1);
612
+ xmlSecAssert2(tok != NULL, -1);
613
+
614
+ val = gcry_sexp_find_token(sexp, tok, 0);
615
+ if(val == NULL) {
616
+ xmlSecError(XMLSEC_ERRORS_HERE,
617
+ NULL,
618
+ "gcry_sexp_find_token",
619
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
620
+ "tok=%s",
621
+ xmlSecErrorsSafeString(tok));
622
+ goto done;
623
+ }
624
+
625
+ mpi = gcry_sexp_nth_mpi(val, 1, GCRYMPI_FMT_USG);
626
+ if(mpi == NULL) {
627
+ xmlSecError(XMLSEC_ERRORS_HERE,
628
+ NULL,
629
+ "gcry_sexp_nth_mpi",
630
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
631
+ "tok=%s",
632
+ xmlSecErrorsSafeString(tok));
633
+ goto done;
634
+ }
635
+
636
+ /* almost done */
637
+ res = xmlSecGCryptNodeSetMpiValue(cur, mpi, addLineBreaks);
638
+
639
+ done:
640
+ if(mpi != NULL) {
641
+ gcry_mpi_release(mpi);
642
+ }
643
+ if(val != NULL) {
644
+ gcry_sexp_release(val);
645
+ }
646
+
647
+ return(res);
648
+ }
649
+
650
+ #ifndef XMLSEC_NO_DSA
651
+ /**************************************************************************
652
+ *
653
+ * <dsig:DSAKeyValue> processing
654
+ *
655
+ *
656
+ * The DSAKeyValue Element (http://www.w3.org/TR/xmldsig-core/#sec-DSAKeyValue)
657
+ *
658
+ * DSA keys and the DSA signature algorithm are specified in [DSS].
659
+ * DSA public key values can have the following fields:
660
+ *
661
+ * * P - a prime modulus meeting the [DSS] requirements
662
+ * * Q - an integer in the range 2**159 < Q < 2**160 which is a prime
663
+ * divisor of P-1
664
+ * * G - an integer with certain properties with respect to P and Q
665
+ * * Y - G**X mod P (where X is part of the private key and not made
666
+ * public)
667
+ * * J - (P - 1) / Q
668
+ * * seed - a DSA prime generation seed
669
+ * * pgenCounter - a DSA prime generation counter
670
+ *
671
+ * Parameter J is available for inclusion solely for efficiency as it is
672
+ * calculatable from P and Q. Parameters seed and pgenCounter are used in the
673
+ * DSA prime number generation algorithm specified in [DSS]. As such, they are
674
+ * optional but must either both be present or both be absent. This prime
675
+ * generation algorithm is designed to provide assurance that a weak prime is
676
+ * not being used and it yields a P and Q value. Parameters P, Q, and G can be
677
+ * public and common to a group of users. They might be known from application
678
+ * context. As such, they are optional but P and Q must either both appear or
679
+ * both be absent. If all of P, Q, seed, and pgenCounter are present,
680
+ * implementations are not required to check if they are consistent and are
681
+ * free to use either P and Q or seed and pgenCounter. All parameters are
682
+ * encoded as base64 [MIME] values.
683
+ *
684
+ * Arbitrary-length integers (e.g. "bignums" such as RSA moduli) are
685
+ * represented in XML as octet strings as defined by the ds:CryptoBinary type.
686
+ *
687
+ * Schema Definition:
688
+ *
689
+ * <element name="DSAKeyValue" type="ds:DSAKeyValueType"/>
690
+ * <complexType name="DSAKeyValueType">
691
+ * <sequence>
692
+ * <sequence minOccurs="0">
693
+ * <element name="P" type="ds:CryptoBinary"/>
694
+ * <element name="Q" type="ds:CryptoBinary"/>
695
+ * </sequence>
696
+ * <element name="G" type="ds:CryptoBinary" minOccurs="0"/>
697
+ * <element name="Y" type="ds:CryptoBinary"/>
698
+ * <element name="J" type="ds:CryptoBinary" minOccurs="0"/>
699
+ * <sequence minOccurs="0">
700
+ * <element name="Seed" type="ds:CryptoBinary"/>
701
+ * <element name="PgenCounter" type="ds:CryptoBinary"/>
702
+ * </sequence>
703
+ * </sequence>
704
+ * </complexType>
705
+ *
706
+ * DTD Definition:
707
+ *
708
+ * <!ELEMENT DSAKeyValue ((P, Q)?, G?, Y, J?, (Seed, PgenCounter)?) >
709
+ * <!ELEMENT P (#PCDATA) >
710
+ * <!ELEMENT Q (#PCDATA) >
711
+ * <!ELEMENT G (#PCDATA) >
712
+ * <!ELEMENT Y (#PCDATA) >
713
+ * <!ELEMENT J (#PCDATA) >
714
+ * <!ELEMENT Seed (#PCDATA) >
715
+ * <!ELEMENT PgenCounter (#PCDATA) >
716
+ *
717
+ * ============================================================================
718
+ *
719
+ * To support reading/writing private keys an X element added (before Y).
720
+ * todo: The current implementation does not support Seed and PgenCounter!
721
+ * by this the P, Q and G are *required*!
722
+ *
723
+ *************************************************************************/
724
+ static int xmlSecGCryptKeyDataDsaInitialize (xmlSecKeyDataPtr data);
725
+ static int xmlSecGCryptKeyDataDsaDuplicate (xmlSecKeyDataPtr dst,
726
+ xmlSecKeyDataPtr src);
727
+ static void xmlSecGCryptKeyDataDsaFinalize (xmlSecKeyDataPtr data);
728
+ static int xmlSecGCryptKeyDataDsaXmlRead (xmlSecKeyDataId id,
729
+ xmlSecKeyPtr key,
730
+ xmlNodePtr node,
731
+ xmlSecKeyInfoCtxPtr keyInfoCtx);
732
+ static int xmlSecGCryptKeyDataDsaXmlWrite (xmlSecKeyDataId id,
733
+ xmlSecKeyPtr key,
734
+ xmlNodePtr node,
735
+ xmlSecKeyInfoCtxPtr keyInfoCtx);
736
+ static int xmlSecGCryptKeyDataDsaGenerate (xmlSecKeyDataPtr data,
737
+ xmlSecSize sizeBits,
738
+ xmlSecKeyDataType type);
739
+
740
+ static xmlSecKeyDataType xmlSecGCryptKeyDataDsaGetType (xmlSecKeyDataPtr data);
741
+ static xmlSecSize xmlSecGCryptKeyDataDsaGetSize (xmlSecKeyDataPtr data);
742
+ static void xmlSecGCryptKeyDataDsaDebugDump (xmlSecKeyDataPtr data,
743
+ FILE* output);
744
+ static void xmlSecGCryptKeyDataDsaDebugXmlDump (xmlSecKeyDataPtr data,
745
+ FILE* output);
746
+
747
+ static xmlSecKeyDataKlass xmlSecGCryptKeyDataDsaKlass = {
748
+ sizeof(xmlSecKeyDataKlass),
749
+ xmlSecGCryptAsymKeyDataSize,
750
+
751
+ /* data */
752
+ xmlSecNameDSAKeyValue,
753
+ xmlSecKeyDataUsageKeyValueNode | xmlSecKeyDataUsageRetrievalMethodNodeXml,
754
+ /* xmlSecKeyDataUsage usage; */
755
+ xmlSecHrefDSAKeyValue, /* const xmlChar* href; */
756
+ xmlSecNodeDSAKeyValue, /* const xmlChar* dataNodeName; */
757
+ xmlSecDSigNs, /* const xmlChar* dataNodeNs; */
758
+
759
+ /* constructors/destructor */
760
+ xmlSecGCryptKeyDataDsaInitialize, /* xmlSecKeyDataInitializeMethod initialize; */
761
+ xmlSecGCryptKeyDataDsaDuplicate, /* xmlSecKeyDataDuplicateMethod duplicate; */
762
+ xmlSecGCryptKeyDataDsaFinalize, /* xmlSecKeyDataFinalizeMethod finalize; */
763
+ xmlSecGCryptKeyDataDsaGenerate, /* xmlSecKeyDataGenerateMethod generate; */
764
+
765
+ /* get info */
766
+ xmlSecGCryptKeyDataDsaGetType, /* xmlSecKeyDataGetTypeMethod getType; */
767
+ xmlSecGCryptKeyDataDsaGetSize, /* xmlSecKeyDataGetSizeMethod getSize; */
768
+ NULL, /* xmlSecKeyDataGetIdentifier getIdentifier; */
769
+
770
+ /* read/write */
771
+ xmlSecGCryptKeyDataDsaXmlRead, /* xmlSecKeyDataXmlReadMethod xmlRead; */
772
+ xmlSecGCryptKeyDataDsaXmlWrite, /* xmlSecKeyDataXmlWriteMethod xmlWrite; */
773
+ NULL, /* xmlSecKeyDataBinReadMethod binRead; */
774
+ NULL, /* xmlSecKeyDataBinWriteMethod binWrite; */
775
+
776
+ /* debug */
777
+ xmlSecGCryptKeyDataDsaDebugDump, /* xmlSecKeyDataDebugDumpMethod debugDump; */
778
+ xmlSecGCryptKeyDataDsaDebugXmlDump, /* xmlSecKeyDataDebugDumpMethod debugXmlDump; */
779
+
780
+ /* reserved for the future */
781
+ NULL, /* void* reserved0; */
782
+ NULL, /* void* reserved1; */
783
+ };
784
+
785
+ /**
786
+ * xmlSecGCryptKeyDataDsaGetKlass:
787
+ *
788
+ * The DSA key data klass.
789
+ *
790
+ * Returns: pointer to DSA key data klass.
791
+ */
792
+ xmlSecKeyDataId
793
+ xmlSecGCryptKeyDataDsaGetKlass(void) {
794
+ return(&xmlSecGCryptKeyDataDsaKlass);
795
+ }
796
+
797
+ /**
798
+ * xmlSecGCryptKeyDataDsaAdoptKey:
799
+ * @data: the pointer to DSA key data.
800
+ * @dsa_key: the pointer to GCrypt DSA key.
801
+ *
802
+ * Sets the value of DSA key data.
803
+ *
804
+ * Returns: 0 on success or a negative value otherwise.
805
+ */
806
+ int
807
+ xmlSecGCryptKeyDataDsaAdoptKey(xmlSecKeyDataPtr data, gcry_sexp_t dsa_key) {
808
+ xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecGCryptKeyDataDsaId), -1);
809
+ xmlSecAssert2(dsa_key != NULL, -1);
810
+
811
+ return xmlSecGCryptAsymKeyDataAdoptKey(data, dsa_key);
812
+ }
813
+
814
+
815
+ /**
816
+ * xmlSecGCryptKeyDataDsaAdoptKeyPair:
817
+ * @data: the pointer to DSA key data.
818
+ * @pub_key: the pointer to GCrypt DSA pub key.
819
+ * @priv_key: the pointer to GCrypt DSA priv key.
820
+ *
821
+ * Sets the value of DSA key data.
822
+ *
823
+ * Returns: 0 on success or a negative value otherwise.
824
+ */
825
+ int
826
+ xmlSecGCryptKeyDataDsaAdoptKeyPair(xmlSecKeyDataPtr data, gcry_sexp_t pub_key, gcry_sexp_t priv_key) {
827
+ xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecGCryptKeyDataDsaId), -1);
828
+ xmlSecAssert2(pub_key != NULL, -1);
829
+
830
+ return xmlSecGCryptAsymKeyDataAdoptKeyPair(data, pub_key, priv_key);
831
+ }
832
+
833
+ /**
834
+ * xmlSecGCryptKeyDataDsaGetPublicKey:
835
+ * @data: the pointer to DSA key data.
836
+ *
837
+ * Gets the GCrypt DSA public key from DSA key data.
838
+ *
839
+ * Returns: pointer to GCrypt public DSA key or NULL if an error occurs.
840
+ */
841
+ gcry_sexp_t
842
+ xmlSecGCryptKeyDataDsaGetPublicKey(xmlSecKeyDataPtr data) {
843
+ xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecGCryptKeyDataDsaId), NULL);
844
+ return xmlSecGCryptAsymKeyDataGetPublicKey(data);
845
+ }
846
+
847
+ /**
848
+ * xmlSecGCryptKeyDataDsaGetPrivateKey:
849
+ * @data: the pointer to DSA key data.
850
+ *
851
+ * Gets the GCrypt DSA private key from DSA key data.
852
+ *
853
+ * Returns: pointer to GCrypt private DSA key or NULL if an error occurs.
854
+ */
855
+ gcry_sexp_t
856
+ xmlSecGCryptKeyDataDsaGetPrivateKey(xmlSecKeyDataPtr data) {
857
+ xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecGCryptKeyDataDsaId), NULL);
858
+ return xmlSecGCryptAsymKeyDataGetPrivateKey(data);
859
+ }
860
+
861
+ static int
862
+ xmlSecGCryptKeyDataDsaInitialize(xmlSecKeyDataPtr data) {
863
+ xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecGCryptKeyDataDsaId), -1);
864
+
865
+ return(xmlSecGCryptAsymKeyDataInitialize(data));
866
+ }
867
+
868
+ static int
869
+ xmlSecGCryptKeyDataDsaDuplicate(xmlSecKeyDataPtr dst, xmlSecKeyDataPtr src) {
870
+ xmlSecAssert2(xmlSecKeyDataCheckId(dst, xmlSecGCryptKeyDataDsaId), -1);
871
+ xmlSecAssert2(xmlSecKeyDataCheckId(src, xmlSecGCryptKeyDataDsaId), -1);
872
+
873
+ return(xmlSecGCryptAsymKeyDataDuplicate(dst, src));
874
+ }
875
+
876
+ static void
877
+ xmlSecGCryptKeyDataDsaFinalize(xmlSecKeyDataPtr data) {
878
+ xmlSecAssert(xmlSecKeyDataCheckId(data, xmlSecGCryptKeyDataDsaId));
879
+
880
+ xmlSecGCryptAsymKeyDataFinalize(data);
881
+ }
882
+
883
+ static int
884
+ xmlSecGCryptKeyDataDsaGenerate(xmlSecKeyDataPtr data, xmlSecSize sizeBits, xmlSecKeyDataType type ATTRIBUTE_UNUSED) {
885
+ xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecGCryptKeyDataDsaId), -1);
886
+ xmlSecAssert2(sizeBits > 0, -1);
887
+
888
+ return xmlSecGCryptAsymKeyDataGenerate(data, "dsa", sizeBits);
889
+ }
890
+
891
+ static xmlSecKeyDataType
892
+ xmlSecGCryptKeyDataDsaGetType(xmlSecKeyDataPtr data) {
893
+ xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecGCryptKeyDataDsaId), xmlSecKeyDataTypeUnknown);
894
+
895
+ return xmlSecGCryptAsymKeyDataGetType(data);
896
+ }
897
+
898
+ static xmlSecSize
899
+ xmlSecGCryptKeyDataDsaGetSize(xmlSecKeyDataPtr data) {
900
+ xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecGCryptKeyDataDsaId), 0);
901
+
902
+ return xmlSecGCryptAsymKeyDataGetSize(data);
903
+ }
904
+
905
+ static void
906
+ xmlSecGCryptKeyDataDsaDebugDump(xmlSecKeyDataPtr data, FILE* output) {
907
+ xmlSecAssert(xmlSecKeyDataCheckId(data, xmlSecGCryptKeyDataDsaId));
908
+ xmlSecAssert(output != NULL);
909
+
910
+ fprintf(output, "=== dsa key: size = %d\n",
911
+ xmlSecGCryptKeyDataDsaGetSize(data));
912
+ }
913
+
914
+ static void
915
+ xmlSecGCryptKeyDataDsaDebugXmlDump(xmlSecKeyDataPtr data, FILE* output) {
916
+ xmlSecAssert(xmlSecKeyDataCheckId(data, xmlSecGCryptKeyDataDsaId));
917
+ xmlSecAssert(output != NULL);
918
+
919
+ fprintf(output, "<DSAKeyValue size=\"%d\" />\n",
920
+ xmlSecGCryptKeyDataDsaGetSize(data));
921
+ }
922
+
923
+ static int
924
+ xmlSecGCryptKeyDataDsaXmlRead(xmlSecKeyDataId id,
925
+ xmlSecKeyPtr key,
926
+ xmlNodePtr node,
927
+ xmlSecKeyInfoCtxPtr keyInfoCtx)
928
+ {
929
+ xmlNodePtr cur;
930
+ xmlSecKeyDataPtr data = NULL;
931
+ gcry_mpi_t p = NULL;
932
+ gcry_mpi_t q = NULL;
933
+ gcry_mpi_t g = NULL;
934
+ gcry_mpi_t x = NULL;
935
+ gcry_mpi_t y = NULL;
936
+ gcry_sexp_t pub_key = NULL;
937
+ gcry_sexp_t priv_key = NULL;
938
+ gcry_error_t err;
939
+ int res = -1;
940
+ int ret;
941
+
942
+ xmlSecAssert2(id == xmlSecGCryptKeyDataDsaId, -1);
943
+ xmlSecAssert2(key != NULL, -1);
944
+ xmlSecAssert2(node != NULL, -1);
945
+ xmlSecAssert2(keyInfoCtx != NULL, -1);
946
+
947
+ if(xmlSecKeyGetValue(key) != NULL) {
948
+ xmlSecError(XMLSEC_ERRORS_HERE,
949
+ xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
950
+ NULL,
951
+ XMLSEC_ERRORS_R_INVALID_KEY_DATA,
952
+ XMLSEC_ERRORS_NO_MESSAGE);
953
+ goto done;
954
+ }
955
+
956
+ cur = xmlSecGetNextElementNode(node->children);
957
+
958
+ /* first is P node. It is REQUIRED because we do not support Seed and PgenCounter*/
959
+ if((cur == NULL) || (!xmlSecCheckNodeName(cur, xmlSecNodeDSAP, xmlSecDSigNs))) {
960
+ xmlSecError(XMLSEC_ERRORS_HERE,
961
+ xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
962
+ xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
963
+ XMLSEC_ERRORS_R_INVALID_NODE,
964
+ "node=%s",
965
+ xmlSecErrorsSafeString(xmlSecNodeDSAP));
966
+ goto done;
967
+ }
968
+ p = xmlSecGCryptNodeGetMpiValue(cur);
969
+ if(p == NULL) {
970
+ xmlSecError(XMLSEC_ERRORS_HERE,
971
+ xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
972
+ "xmlSecGCryptNodeGetMpiValue",
973
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
974
+ "node=%s",
975
+ xmlSecErrorsSafeString(xmlSecNodeDSAP));
976
+ goto done;
977
+ }
978
+ cur = xmlSecGetNextElementNode(cur->next);
979
+
980
+ /* next is Q node. It is REQUIRED because we do not support Seed and PgenCounter*/
981
+ if((cur == NULL) || (!xmlSecCheckNodeName(cur, xmlSecNodeDSAQ, xmlSecDSigNs))) {
982
+ xmlSecError(XMLSEC_ERRORS_HERE,
983
+ xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
984
+ xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
985
+ XMLSEC_ERRORS_R_INVALID_NODE,
986
+ "node=%s",
987
+ xmlSecErrorsSafeString(xmlSecNodeDSAQ));
988
+ goto done;
989
+ }
990
+ q = xmlSecGCryptNodeGetMpiValue(cur);
991
+ if(q == NULL) {
992
+ xmlSecError(XMLSEC_ERRORS_HERE,
993
+ xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
994
+ "xmlSecGCryptNodeGetMpiValue",
995
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
996
+ "node=%s",
997
+ xmlSecErrorsSafeString(xmlSecNodeDSAQ));
998
+ goto done;
999
+ }
1000
+ cur = xmlSecGetNextElementNode(cur->next);
1001
+
1002
+ /* next is G node. It is REQUIRED because we do not support Seed and PgenCounter*/
1003
+ if((cur == NULL) || (!xmlSecCheckNodeName(cur, xmlSecNodeDSAG, xmlSecDSigNs))) {
1004
+ xmlSecError(XMLSEC_ERRORS_HERE,
1005
+ xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
1006
+ xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
1007
+ XMLSEC_ERRORS_R_INVALID_NODE,
1008
+ "node=%s",
1009
+ xmlSecErrorsSafeString(xmlSecNodeDSAG));
1010
+ goto done;
1011
+ }
1012
+ g = xmlSecGCryptNodeGetMpiValue(cur);
1013
+ if(g == NULL) {
1014
+ xmlSecError(XMLSEC_ERRORS_HERE,
1015
+ xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
1016
+ "xmlSecGCryptNodeGetMpiValue",
1017
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1018
+ "node=%s",
1019
+ xmlSecErrorsSafeString(xmlSecNodeDSAG));
1020
+ goto done;
1021
+ }
1022
+ cur = xmlSecGetNextElementNode(cur->next);
1023
+
1024
+ if((cur != NULL) && (xmlSecCheckNodeName(cur, xmlSecNodeDSAX, xmlSecNs))) {
1025
+ /* next is X node. It is REQUIRED for private key but
1026
+ * we are not sure exactly what do we read */
1027
+ x = xmlSecGCryptNodeGetMpiValue(cur);
1028
+ if(x == NULL) {
1029
+ xmlSecError(XMLSEC_ERRORS_HERE,
1030
+ xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
1031
+ "xmlSecGCryptNodeGetMpiValue",
1032
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1033
+ "node=%s",
1034
+ xmlSecErrorsSafeString(xmlSecNodeDSAX));
1035
+ goto done;
1036
+ }
1037
+ cur = xmlSecGetNextElementNode(cur->next);
1038
+ }
1039
+
1040
+ /* next is Y node. */
1041
+ if((cur == NULL) || (!xmlSecCheckNodeName(cur, xmlSecNodeDSAY, xmlSecDSigNs))) {
1042
+ xmlSecError(XMLSEC_ERRORS_HERE,
1043
+ xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
1044
+ xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
1045
+ XMLSEC_ERRORS_R_INVALID_NODE,
1046
+ "node=%s",
1047
+ xmlSecErrorsSafeString(xmlSecNodeDSAY));
1048
+ goto done;
1049
+ }
1050
+ y = xmlSecGCryptNodeGetMpiValue(cur);
1051
+ if(y == NULL) {
1052
+ xmlSecError(XMLSEC_ERRORS_HERE,
1053
+ xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
1054
+ "xmlSecGCryptNodeGetMpiValue",
1055
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1056
+ "node=%s", xmlSecErrorsSafeString(xmlSecNodeDSAY));
1057
+ goto done;
1058
+ }
1059
+ cur = xmlSecGetNextElementNode(cur->next);
1060
+
1061
+ /* todo: add support for J */
1062
+ if((cur != NULL) && (xmlSecCheckNodeName(cur, xmlSecNodeDSAJ, xmlSecDSigNs))) {
1063
+ cur = xmlSecGetNextElementNode(cur->next);
1064
+ }
1065
+
1066
+ /* todo: add support for seed */
1067
+ if((cur != NULL) && (xmlSecCheckNodeName(cur, xmlSecNodeDSASeed, xmlSecDSigNs))) {
1068
+ cur = xmlSecGetNextElementNode(cur->next);
1069
+ }
1070
+
1071
+ /* todo: add support for pgencounter */
1072
+ if((cur != NULL) && (xmlSecCheckNodeName(cur, xmlSecNodeDSAPgenCounter, xmlSecDSigNs))) {
1073
+ cur = xmlSecGetNextElementNode(cur->next);
1074
+ }
1075
+
1076
+ if(cur != NULL) {
1077
+ xmlSecError(XMLSEC_ERRORS_HERE,
1078
+ xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
1079
+ xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
1080
+ XMLSEC_ERRORS_R_UNEXPECTED_NODE,
1081
+ XMLSEC_ERRORS_NO_MESSAGE);
1082
+ goto done;
1083
+ }
1084
+
1085
+
1086
+ /* construct pub/priv key pairs */
1087
+ err = gcry_sexp_build(&pub_key, NULL,
1088
+ "(public-key(dsa(p%m)(q%m)(g%m)(y%m)))",
1089
+ p, q, g, y);
1090
+ if((err != GPG_ERR_NO_ERROR) || (pub_key == NULL)) {
1091
+ xmlSecError(XMLSEC_ERRORS_HERE,
1092
+ xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
1093
+ "gcry_sexp_build(public)",
1094
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1095
+ XMLSEC_GCRYPT_REPORT_ERROR(err));
1096
+ goto done;
1097
+ }
1098
+ if(x != NULL) {
1099
+ err = gcry_sexp_build(&priv_key, NULL,
1100
+ "(private-key(dsa(p%m)(q%m)(g%m)(x%m)(y%m)))",
1101
+ p, q, g, x, y);
1102
+ if((err != GPG_ERR_NO_ERROR) || (priv_key == NULL)) {
1103
+ xmlSecError(XMLSEC_ERRORS_HERE,
1104
+ xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
1105
+ "gcry_sexp_build(private)",
1106
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1107
+ XMLSEC_GCRYPT_REPORT_ERROR(err));
1108
+ goto done;
1109
+ }
1110
+ }
1111
+
1112
+ /* create key data */
1113
+ data = xmlSecKeyDataCreate(id);
1114
+ if(data == NULL ) {
1115
+ xmlSecError(XMLSEC_ERRORS_HERE,
1116
+ xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
1117
+ "xmlSecKeyDataCreate",
1118
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1119
+ XMLSEC_ERRORS_NO_MESSAGE);
1120
+ goto done;
1121
+ }
1122
+
1123
+ ret = xmlSecGCryptKeyDataDsaAdoptKeyPair(data, pub_key, priv_key);
1124
+ if(ret < 0) {
1125
+ xmlSecError(XMLSEC_ERRORS_HERE,
1126
+ xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
1127
+ "xmlSecGCryptKeyDataDsaAdoptKeyPair",
1128
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1129
+ XMLSEC_ERRORS_NO_MESSAGE);
1130
+ goto done;
1131
+ }
1132
+ pub_key = NULL; /* pub_key is owned by data now */
1133
+ priv_key = NULL; /* priv_key is owned by data now */
1134
+
1135
+ /* set key */
1136
+ ret = xmlSecKeySetValue(key, data);
1137
+ if(ret < 0) {
1138
+ xmlSecError(XMLSEC_ERRORS_HERE,
1139
+ xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
1140
+ "xmlSecKeySetValue",
1141
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1142
+ XMLSEC_ERRORS_NO_MESSAGE);
1143
+ goto done;
1144
+ }
1145
+ data = NULL; /* data is owned by key now */
1146
+
1147
+ /* success */
1148
+ res = 0;
1149
+
1150
+ done:
1151
+ /* cleanup */
1152
+ if(p != NULL) {
1153
+ gcry_mpi_release(p);
1154
+ }
1155
+
1156
+ if(q != NULL) {
1157
+ gcry_mpi_release(q);
1158
+ }
1159
+
1160
+ if(g != NULL) {
1161
+ gcry_mpi_release(g);
1162
+ }
1163
+
1164
+ if(x != NULL) {
1165
+ gcry_mpi_release(x);
1166
+ }
1167
+
1168
+ if(y != NULL) {
1169
+ gcry_mpi_release(y);
1170
+ }
1171
+
1172
+ if(pub_key != NULL) {
1173
+ gcry_sexp_release(pub_key);
1174
+ }
1175
+
1176
+ if(priv_key != NULL) {
1177
+ gcry_sexp_release(priv_key);
1178
+ }
1179
+
1180
+ if(data != NULL) {
1181
+ xmlSecKeyDataDestroy(data);
1182
+ }
1183
+ return(res);
1184
+ }
1185
+
1186
+ static int
1187
+ xmlSecGCryptKeyDataDsaXmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key,
1188
+ xmlNodePtr node, xmlSecKeyInfoCtxPtr keyInfoCtx) {
1189
+ xmlNodePtr cur;
1190
+ gcry_sexp_t pub_priv_key;
1191
+ gcry_sexp_t dsa = NULL;
1192
+ int private = 0;
1193
+ int res = -1;
1194
+ int ret;
1195
+
1196
+ xmlSecAssert2(id == xmlSecGCryptKeyDataDsaId, -1);
1197
+ xmlSecAssert2(key != NULL, -1);
1198
+ xmlSecAssert2(xmlSecKeyDataCheckId(xmlSecKeyGetValue(key), xmlSecGCryptKeyDataDsaId), -1);
1199
+ xmlSecAssert2(node != NULL, -1);
1200
+ xmlSecAssert2(keyInfoCtx != NULL, -1);
1201
+
1202
+ if(((xmlSecKeyDataTypePublic | xmlSecKeyDataTypePrivate) & keyInfoCtx->keyReq.keyType) == 0) {
1203
+ /* we can have only private key or public key */
1204
+ return(0);
1205
+ }
1206
+
1207
+ /* find the private or public key */
1208
+ pub_priv_key = xmlSecGCryptKeyDataDsaGetPrivateKey(xmlSecKeyGetValue(key));
1209
+ if(pub_priv_key == NULL) {
1210
+ pub_priv_key = xmlSecGCryptKeyDataDsaGetPublicKey(xmlSecKeyGetValue(key));
1211
+ if(pub_priv_key == NULL) {
1212
+ xmlSecError(XMLSEC_ERRORS_HERE,
1213
+ xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
1214
+ "xmlSecGCryptKeyDataDsaGetPublicKey()",
1215
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1216
+ XMLSEC_ERRORS_NO_MESSAGE);
1217
+ goto done;
1218
+ }
1219
+ } else {
1220
+ private = 1;
1221
+ }
1222
+
1223
+ dsa = gcry_sexp_find_token(pub_priv_key, "dsa", 0);
1224
+ if(dsa == NULL) {
1225
+ xmlSecError(XMLSEC_ERRORS_HERE,
1226
+ xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
1227
+ "gcry_sexp_find_token(dsa)",
1228
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1229
+ XMLSEC_ERRORS_NO_MESSAGE);
1230
+ goto done;
1231
+ }
1232
+
1233
+ /* first is P node */
1234
+ cur = xmlSecAddChild(node, xmlSecNodeDSAP, xmlSecDSigNs);
1235
+ if(cur == NULL) {
1236
+ xmlSecError(XMLSEC_ERRORS_HERE,
1237
+ xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
1238
+ "xmlSecAddChild",
1239
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1240
+ "node=%s",
1241
+ xmlSecErrorsSafeString(xmlSecNodeDSAP));
1242
+ goto done;
1243
+ }
1244
+ ret = xmlSecGCryptNodeSetSExpTokValue(cur, dsa, "p", 1);
1245
+ if(ret < 0) {
1246
+ xmlSecError(XMLSEC_ERRORS_HERE,
1247
+ xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
1248
+ "xmlSecGCryptNodeSetSExpTokValue",
1249
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1250
+ "node=%s",
1251
+ xmlSecErrorsSafeString(xmlSecNodeDSAP));
1252
+ goto done;
1253
+ }
1254
+
1255
+ /* next is Q node. */
1256
+ cur = xmlSecAddChild(node, xmlSecNodeDSAQ, xmlSecDSigNs);
1257
+ if(cur == NULL) {
1258
+ xmlSecError(XMLSEC_ERRORS_HERE,
1259
+ xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
1260
+ "xmlSecAddChild",
1261
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1262
+ "node=%s",
1263
+ xmlSecErrorsSafeString(xmlSecNodeDSAQ));
1264
+ goto done;
1265
+ }
1266
+ ret = xmlSecGCryptNodeSetSExpTokValue(cur, dsa, "q", 1);
1267
+ if(ret < 0) {
1268
+ xmlSecError(XMLSEC_ERRORS_HERE,
1269
+ xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
1270
+ "xmlSecGCryptNodeSetSExpTokValue",
1271
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1272
+ "node=%s",
1273
+ xmlSecErrorsSafeString(xmlSecNodeDSAQ));
1274
+ goto done;
1275
+ }
1276
+
1277
+ /* next is G node. */
1278
+ cur = xmlSecAddChild(node, xmlSecNodeDSAG, xmlSecDSigNs);
1279
+ if(cur == NULL) {
1280
+ xmlSecError(XMLSEC_ERRORS_HERE,
1281
+ xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
1282
+ "xmlSecAddChild",
1283
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1284
+ "node=%s",
1285
+ xmlSecErrorsSafeString(xmlSecNodeDSAG));
1286
+ goto done;
1287
+ }
1288
+ ret = xmlSecGCryptNodeSetSExpTokValue(cur, dsa, "g", 1);
1289
+ if(ret < 0) {
1290
+ xmlSecError(XMLSEC_ERRORS_HERE,
1291
+ xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
1292
+ "xmlSecGCryptNodeSetSExpTokValue",
1293
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1294
+ "node=%s",
1295
+ xmlSecErrorsSafeString(xmlSecNodeDSAG));
1296
+ goto done;
1297
+ }
1298
+
1299
+ /* next is X node: write it ONLY for private keys and ONLY if it is requested */
1300
+ if(((keyInfoCtx->keyReq.keyType & xmlSecKeyDataTypePrivate) != 0) && (private != 0)) {
1301
+ cur = xmlSecAddChild(node, xmlSecNodeDSAX, xmlSecNs);
1302
+ if(cur == NULL) {
1303
+ xmlSecError(XMLSEC_ERRORS_HERE,
1304
+ xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
1305
+ "xmlSecAddChild",
1306
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1307
+ "node=%s",
1308
+ xmlSecErrorsSafeString(xmlSecNodeDSAX));
1309
+ goto done;
1310
+ }
1311
+ ret = xmlSecGCryptNodeSetSExpTokValue(cur, dsa, "x", 1);
1312
+ if(ret < 0) {
1313
+ xmlSecError(XMLSEC_ERRORS_HERE,
1314
+ xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
1315
+ "xmlSecGCryptNodeSetSExpTokValue",
1316
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1317
+ "node=%s",
1318
+ xmlSecErrorsSafeString(xmlSecNodeDSAX));
1319
+ goto done;
1320
+ }
1321
+ }
1322
+
1323
+ /* next is Y node. */
1324
+ cur = xmlSecAddChild(node, xmlSecNodeDSAY, xmlSecDSigNs);
1325
+ if(cur == NULL) {
1326
+ xmlSecError(XMLSEC_ERRORS_HERE,
1327
+ xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
1328
+ "xmlSecAddChild",
1329
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1330
+ "node=%s",
1331
+ xmlSecErrorsSafeString(xmlSecNodeDSAY));
1332
+ goto done;
1333
+ }
1334
+ ret = xmlSecGCryptNodeSetSExpTokValue(cur, dsa, "y", 1);
1335
+ if(ret < 0) {
1336
+ xmlSecError(XMLSEC_ERRORS_HERE,
1337
+ xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
1338
+ "xmlSecGCryptNodeSetSExpTokValue",
1339
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1340
+ "node=%s",
1341
+ xmlSecErrorsSafeString(xmlSecNodeDSAY));
1342
+ goto done;
1343
+ }
1344
+
1345
+ /* success */
1346
+ res = 0;
1347
+
1348
+ done:
1349
+ if(dsa != NULL) {
1350
+ gcry_sexp_release(dsa);
1351
+ }
1352
+
1353
+ return(res);
1354
+ }
1355
+
1356
+ #endif /* XMLSEC_NO_DSA */
1357
+
1358
+
1359
+ #ifndef XMLSEC_NO_RSA
1360
+ /**************************************************************************
1361
+ *
1362
+ * <dsig:RSAKeyValue> processing
1363
+ *
1364
+ * http://www.w3.org/TR/xmldsig-core/#sec-RSAKeyValue
1365
+ * The RSAKeyValue Element
1366
+ *
1367
+ * RSA key values have two fields: Modulus and Exponent.
1368
+ *
1369
+ * <RSAKeyValue>
1370
+ * <Modulus>xA7SEU+e0yQH5rm9kbCDN9o3aPIo7HbP7tX6WOocLZAtNfyxSZDU16ksL6W
1371
+ * jubafOqNEpcwR3RdFsT7bCqnXPBe5ELh5u4VEy19MzxkXRgrMvavzyBpVRgBUwUlV
1372
+ * 5foK5hhmbktQhyNdy/6LpQRhDUDsTvK+g9Ucj47es9AQJ3U=
1373
+ * </Modulus>
1374
+ * <Exponent>AQAB</Exponent>
1375
+ * </RSAKeyValue>
1376
+ *
1377
+ * Arbitrary-length integers (e.g. "bignums" such as RSA moduli) are
1378
+ * represented in XML as octet strings as defined by the ds:CryptoBinary type.
1379
+ *
1380
+ * Schema Definition:
1381
+ *
1382
+ * <element name="RSAKeyValue" type="ds:RSAKeyValueType"/>
1383
+ * <complexType name="RSAKeyValueType">
1384
+ * <sequence>
1385
+ * <element name="Modulus" type="ds:CryptoBinary"/>
1386
+ * <element name="Exponent" type="ds:CryptoBinary"/>
1387
+ * </sequence>
1388
+ * </complexType>
1389
+ *
1390
+ * DTD Definition:
1391
+ *
1392
+ * <!ELEMENT RSAKeyValue (Modulus, Exponent) >
1393
+ * <!ELEMENT Modulus (#PCDATA) >
1394
+ * <!ELEMENT Exponent (#PCDATA) >
1395
+ *
1396
+ * ============================================================================
1397
+ *
1398
+ * To support reading/writing private keys an PrivateExponent element is added
1399
+ * to the end
1400
+ *
1401
+ *************************************************************************/
1402
+
1403
+ static int xmlSecGCryptKeyDataRsaInitialize (xmlSecKeyDataPtr data);
1404
+ static int xmlSecGCryptKeyDataRsaDuplicate (xmlSecKeyDataPtr dst,
1405
+ xmlSecKeyDataPtr src);
1406
+ static void xmlSecGCryptKeyDataRsaFinalize (xmlSecKeyDataPtr data);
1407
+ static int xmlSecGCryptKeyDataRsaXmlRead (xmlSecKeyDataId id,
1408
+ xmlSecKeyPtr key,
1409
+ xmlNodePtr node,
1410
+ xmlSecKeyInfoCtxPtr keyInfoCtx);
1411
+ static int xmlSecGCryptKeyDataRsaXmlWrite (xmlSecKeyDataId id,
1412
+ xmlSecKeyPtr key,
1413
+ xmlNodePtr node,
1414
+ xmlSecKeyInfoCtxPtr keyInfoCtx);
1415
+ static int xmlSecGCryptKeyDataRsaGenerate (xmlSecKeyDataPtr data,
1416
+ xmlSecSize sizeBits,
1417
+ xmlSecKeyDataType type);
1418
+
1419
+ static xmlSecKeyDataType xmlSecGCryptKeyDataRsaGetType (xmlSecKeyDataPtr data);
1420
+ static xmlSecSize xmlSecGCryptKeyDataRsaGetSize (xmlSecKeyDataPtr data);
1421
+ static void xmlSecGCryptKeyDataRsaDebugDump (xmlSecKeyDataPtr data,
1422
+ FILE* output);
1423
+ static void xmlSecGCryptKeyDataRsaDebugXmlDump (xmlSecKeyDataPtr data,
1424
+ FILE* output);
1425
+ static xmlSecKeyDataKlass xmlSecGCryptKeyDataRsaKlass = {
1426
+ sizeof(xmlSecKeyDataKlass),
1427
+ xmlSecGCryptAsymKeyDataSize,
1428
+
1429
+ /* data */
1430
+ xmlSecNameRSAKeyValue,
1431
+ xmlSecKeyDataUsageKeyValueNode | xmlSecKeyDataUsageRetrievalMethodNodeXml,
1432
+ /* xmlSecKeyDataUsage usage; */
1433
+ xmlSecHrefRSAKeyValue, /* const xmlChar* href; */
1434
+ xmlSecNodeRSAKeyValue, /* const xmlChar* dataNodeName; */
1435
+ xmlSecDSigNs, /* const xmlChar* dataNodeNs; */
1436
+
1437
+ /* constructors/destructor */
1438
+ xmlSecGCryptKeyDataRsaInitialize, /* xmlSecKeyDataInitializeMethod initialize; */
1439
+ xmlSecGCryptKeyDataRsaDuplicate, /* xmlSecKeyDataDuplicateMethod duplicate; */
1440
+ xmlSecGCryptKeyDataRsaFinalize, /* xmlSecKeyDataFinalizeMethod finalize; */
1441
+ xmlSecGCryptKeyDataRsaGenerate, /* xmlSecKeyDataGenerateMethod generate; */
1442
+
1443
+ /* get info */
1444
+ xmlSecGCryptKeyDataRsaGetType, /* xmlSecKeyDataGetTypeMethod getType; */
1445
+ xmlSecGCryptKeyDataRsaGetSize, /* xmlSecKeyDataGetSizeMethod getSize; */
1446
+ NULL, /* xmlSecKeyDataGetIdentifier getIdentifier; */
1447
+
1448
+ /* read/write */
1449
+ xmlSecGCryptKeyDataRsaXmlRead, /* xmlSecKeyDataXmlReadMethod xmlRead; */
1450
+ xmlSecGCryptKeyDataRsaXmlWrite, /* xmlSecKeyDataXmlWriteMethod xmlWrite; */
1451
+ NULL, /* xmlSecKeyDataBinReadMethod binRead; */
1452
+ NULL, /* xmlSecKeyDataBinWriteMethod binWrite; */
1453
+
1454
+ /* debug */
1455
+ xmlSecGCryptKeyDataRsaDebugDump, /* xmlSecKeyDataDebugDumpMethod debugDump; */
1456
+ xmlSecGCryptKeyDataRsaDebugXmlDump, /* xmlSecKeyDataDebugDumpMethod debugXmlDump; */
1457
+
1458
+ /* reserved for the future */
1459
+ NULL, /* void* reserved0; */
1460
+ NULL, /* void* reserved1; */
1461
+ };
1462
+
1463
+ /**
1464
+ * xmlSecGCryptKeyDataRsaGetKlass:
1465
+ *
1466
+ * The GCrypt RSA key data klass.
1467
+ *
1468
+ * Returns: pointer to GCrypt RSA key data klass.
1469
+ */
1470
+ xmlSecKeyDataId
1471
+ xmlSecGCryptKeyDataRsaGetKlass(void) {
1472
+ return(&xmlSecGCryptKeyDataRsaKlass);
1473
+ }
1474
+
1475
+ /**
1476
+ * xmlSecGCryptKeyDataRsaAdoptKey:
1477
+ * @data: the pointer to RSA key data.
1478
+ * @rsa_key: the pointer to GCrypt RSA key.
1479
+ *
1480
+ * Sets the value of RSA key data.
1481
+ *
1482
+ * Returns: 0 on success or a negative value otherwise.
1483
+ */
1484
+ int
1485
+ xmlSecGCryptKeyDataRsaAdoptKey(xmlSecKeyDataPtr data, gcry_sexp_t rsa_key) {
1486
+ xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecGCryptKeyDataRsaId), -1);
1487
+ xmlSecAssert2(rsa_key != NULL, -1);
1488
+
1489
+ return xmlSecGCryptAsymKeyDataAdoptKey(data, rsa_key);
1490
+ }
1491
+
1492
+
1493
+ /**
1494
+ * xmlSecGCryptKeyDataRsaAdoptKeyPair:
1495
+ * @data: the pointer to RSA key data.
1496
+ * @pub_key: the pointer to GCrypt RSA pub key.
1497
+ * @priv_key: the pointer to GCrypt RSA priv key.
1498
+ *
1499
+ * Sets the value of RSA key data.
1500
+ *
1501
+ * Returns: 0 on success or a negative value otherwise.
1502
+ */
1503
+ int
1504
+ xmlSecGCryptKeyDataRsaAdoptKeyPair(xmlSecKeyDataPtr data, gcry_sexp_t pub_key, gcry_sexp_t priv_key) {
1505
+ xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecGCryptKeyDataRsaId), -1);
1506
+ xmlSecAssert2(pub_key != NULL, -1);
1507
+
1508
+ return xmlSecGCryptAsymKeyDataAdoptKeyPair(data, pub_key, priv_key);
1509
+ }
1510
+
1511
+ /**
1512
+ * xmlSecGCryptKeyDataRsaGetPublicKey:
1513
+ * @data: the pointer to RSA key data.
1514
+ *
1515
+ * Gets the GCrypt RSA public key from RSA key data.
1516
+ *
1517
+ * Returns: pointer to GCrypt public RSA key or NULL if an error occurs.
1518
+ */
1519
+ gcry_sexp_t
1520
+ xmlSecGCryptKeyDataRsaGetPublicKey(xmlSecKeyDataPtr data) {
1521
+ xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecGCryptKeyDataRsaId), NULL);
1522
+ return xmlSecGCryptAsymKeyDataGetPublicKey(data);
1523
+ }
1524
+
1525
+ /**
1526
+ * xmlSecGCryptKeyDataRsaGetPrivateKey:
1527
+ * @data: the pointer to RSA key data.
1528
+ *
1529
+ * Gets the GCrypt RSA private key from RSA key data.
1530
+ *
1531
+ * Returns: pointer to GCrypt private RSA key or NULL if an error occurs.
1532
+ */
1533
+ gcry_sexp_t
1534
+ xmlSecGCryptKeyDataRsaGetPrivateKey(xmlSecKeyDataPtr data) {
1535
+ xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecGCryptKeyDataRsaId), NULL);
1536
+ return xmlSecGCryptAsymKeyDataGetPrivateKey(data);
1537
+ }
1538
+
1539
+ static int
1540
+ xmlSecGCryptKeyDataRsaInitialize(xmlSecKeyDataPtr data) {
1541
+ xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecGCryptKeyDataRsaId), -1);
1542
+
1543
+ return(xmlSecGCryptAsymKeyDataInitialize(data));
1544
+ }
1545
+
1546
+ static int
1547
+ xmlSecGCryptKeyDataRsaDuplicate(xmlSecKeyDataPtr dst, xmlSecKeyDataPtr src) {
1548
+ xmlSecAssert2(xmlSecKeyDataCheckId(dst, xmlSecGCryptKeyDataRsaId), -1);
1549
+ xmlSecAssert2(xmlSecKeyDataCheckId(src, xmlSecGCryptKeyDataRsaId), -1);
1550
+
1551
+ return(xmlSecGCryptAsymKeyDataDuplicate(dst, src));
1552
+ }
1553
+
1554
+ static void
1555
+ xmlSecGCryptKeyDataRsaFinalize(xmlSecKeyDataPtr data) {
1556
+ xmlSecAssert(xmlSecKeyDataCheckId(data, xmlSecGCryptKeyDataRsaId));
1557
+
1558
+ xmlSecGCryptAsymKeyDataFinalize(data);
1559
+ }
1560
+
1561
+ static int
1562
+ xmlSecGCryptKeyDataRsaGenerate(xmlSecKeyDataPtr data, xmlSecSize sizeBits, xmlSecKeyDataType type ATTRIBUTE_UNUSED) {
1563
+ xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecGCryptKeyDataRsaId), -1);
1564
+ xmlSecAssert2(sizeBits > 0, -1);
1565
+
1566
+ return xmlSecGCryptAsymKeyDataGenerate(data, "rsa", sizeBits);
1567
+ }
1568
+
1569
+ static xmlSecKeyDataType
1570
+ xmlSecGCryptKeyDataRsaGetType(xmlSecKeyDataPtr data) {
1571
+ xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecGCryptKeyDataRsaId), xmlSecKeyDataTypeUnknown);
1572
+
1573
+ return xmlSecGCryptAsymKeyDataGetType(data);
1574
+ }
1575
+
1576
+ static xmlSecSize
1577
+ xmlSecGCryptKeyDataRsaGetSize(xmlSecKeyDataPtr data) {
1578
+ xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecGCryptKeyDataRsaId), 0);
1579
+
1580
+ return xmlSecGCryptAsymKeyDataGetSize(data);
1581
+ }
1582
+
1583
+ static void
1584
+ xmlSecGCryptKeyDataRsaDebugDump(xmlSecKeyDataPtr data, FILE* output) {
1585
+ xmlSecAssert(xmlSecKeyDataCheckId(data, xmlSecGCryptKeyDataRsaId));
1586
+ xmlSecAssert(output != NULL);
1587
+
1588
+ fprintf(output, "=== rsa key: size = %d\n",
1589
+ xmlSecGCryptKeyDataRsaGetSize(data));
1590
+ }
1591
+
1592
+ static void
1593
+ xmlSecGCryptKeyDataRsaDebugXmlDump(xmlSecKeyDataPtr data, FILE* output) {
1594
+ xmlSecAssert(xmlSecKeyDataCheckId(data, xmlSecGCryptKeyDataRsaId));
1595
+ xmlSecAssert(output != NULL);
1596
+
1597
+ fprintf(output, "<RSAKeyValue size=\"%d\" />\n",
1598
+ xmlSecGCryptKeyDataRsaGetSize(data));
1599
+ }
1600
+
1601
+ static int
1602
+ xmlSecGCryptKeyDataRsaXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
1603
+ xmlNodePtr node, xmlSecKeyInfoCtxPtr keyInfoCtx) {
1604
+ xmlNodePtr cur;
1605
+ xmlSecKeyDataPtr data = NULL;
1606
+ gcry_mpi_t n = NULL;
1607
+ gcry_mpi_t e = NULL;
1608
+ gcry_mpi_t d = NULL;
1609
+ gcry_sexp_t pub_key = NULL;
1610
+ gcry_sexp_t priv_key = NULL;
1611
+ gcry_error_t err;
1612
+ int res = -1;
1613
+ int ret;
1614
+
1615
+ xmlSecAssert2(id == xmlSecGCryptKeyDataRsaId, -1);
1616
+ xmlSecAssert2(key != NULL, -1);
1617
+ xmlSecAssert2(node != NULL, -1);
1618
+ xmlSecAssert2(keyInfoCtx != NULL, -1);
1619
+
1620
+ if(xmlSecKeyGetValue(key) != NULL) {
1621
+ xmlSecError(XMLSEC_ERRORS_HERE,
1622
+ xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
1623
+ NULL,
1624
+ XMLSEC_ERRORS_R_INVALID_KEY_DATA,
1625
+ "key already has a value");
1626
+ goto done;
1627
+ }
1628
+
1629
+ cur = xmlSecGetNextElementNode(node->children);
1630
+
1631
+ /* first is Modulus node. It is REQUIRED */
1632
+ if((cur == NULL) || (!xmlSecCheckNodeName(cur, xmlSecNodeRSAModulus, xmlSecDSigNs))) {
1633
+ xmlSecError(XMLSEC_ERRORS_HERE,
1634
+ xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
1635
+ xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
1636
+ XMLSEC_ERRORS_R_INVALID_NODE,
1637
+ "node=%s",
1638
+ xmlSecErrorsSafeString(xmlSecNodeRSAModulus));
1639
+ goto done;
1640
+ }
1641
+ n = xmlSecGCryptNodeGetMpiValue(cur);
1642
+ if(n == NULL) {
1643
+ xmlSecError(XMLSEC_ERRORS_HERE,
1644
+ xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
1645
+ "xmlSecGCryptNodeGetMpiValue",
1646
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1647
+ "node=%s",
1648
+ xmlSecErrorsSafeString(xmlSecNodeRSAModulus));
1649
+ goto done;
1650
+ }
1651
+ cur = xmlSecGetNextElementNode(cur->next);
1652
+
1653
+ /* next is Exponent node. It is REQUIRED */
1654
+ if((cur == NULL) || (!xmlSecCheckNodeName(cur, xmlSecNodeRSAExponent, xmlSecDSigNs))) {
1655
+ xmlSecError(XMLSEC_ERRORS_HERE,
1656
+ xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
1657
+ xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
1658
+ XMLSEC_ERRORS_R_INVALID_NODE,
1659
+ "node=%s",
1660
+ xmlSecErrorsSafeString(xmlSecNodeRSAExponent));
1661
+ goto done;
1662
+ }
1663
+ e = xmlSecGCryptNodeGetMpiValue(cur);
1664
+ if(e == NULL) {
1665
+ xmlSecError(XMLSEC_ERRORS_HERE,
1666
+ xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
1667
+ "xmlSecGCryptNodeGetMpiValue",
1668
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1669
+ "node=%s",
1670
+ xmlSecErrorsSafeString(xmlSecNodeRSAExponent));
1671
+ goto done;
1672
+ }
1673
+ cur = xmlSecGetNextElementNode(cur->next);
1674
+
1675
+ if((cur != NULL) && (xmlSecCheckNodeName(cur, xmlSecNodeRSAPrivateExponent, xmlSecNs))) {
1676
+ /* next is PrivateExponent node. It is REQUIRED for private key */
1677
+ d = xmlSecGCryptNodeGetMpiValue(cur);
1678
+ if(d == NULL) {
1679
+ xmlSecError(XMLSEC_ERRORS_HERE,
1680
+ xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
1681
+ "xmlSecGCryptNodeGetMpiValue",
1682
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1683
+ "node=%s",
1684
+ xmlSecErrorsSafeString(xmlSecNodeRSAPrivateExponent));
1685
+ goto done;
1686
+ }
1687
+ cur = xmlSecGetNextElementNode(cur->next);
1688
+ }
1689
+
1690
+ if(cur != NULL) {
1691
+ xmlSecError(XMLSEC_ERRORS_HERE,
1692
+ xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
1693
+ xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
1694
+ XMLSEC_ERRORS_R_INVALID_NODE,
1695
+ "no nodes expected");
1696
+ goto done;
1697
+ }
1698
+
1699
+ /* construct pub/priv key pairs */
1700
+ err = gcry_sexp_build(&pub_key, NULL,
1701
+ "(public-key(rsa(n%m)(e%m)))",
1702
+ n, e);
1703
+ if((err != GPG_ERR_NO_ERROR) || (pub_key == NULL)) {
1704
+ xmlSecError(XMLSEC_ERRORS_HERE,
1705
+ xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
1706
+ "gcry_sexp_build(public)",
1707
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1708
+ XMLSEC_GCRYPT_REPORT_ERROR(err));
1709
+ goto done;
1710
+ }
1711
+ if(d != NULL) {
1712
+ err = gcry_sexp_build(&priv_key, NULL,
1713
+ "(private-key(rsa(n%m)(e%m)(d%m)))",
1714
+ n, e, d);
1715
+ if((err != GPG_ERR_NO_ERROR) || (priv_key == NULL)) {
1716
+ xmlSecError(XMLSEC_ERRORS_HERE,
1717
+ xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
1718
+ "gcry_sexp_build(private)",
1719
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1720
+ XMLSEC_GCRYPT_REPORT_ERROR(err));
1721
+ goto done;
1722
+ }
1723
+ }
1724
+
1725
+
1726
+ /* create key data */
1727
+ data = xmlSecKeyDataCreate(id);
1728
+ if(data == NULL ) {
1729
+ xmlSecError(XMLSEC_ERRORS_HERE,
1730
+ xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
1731
+ "xmlSecKeyDataCreate",
1732
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1733
+ XMLSEC_ERRORS_NO_MESSAGE);
1734
+ goto done;
1735
+ }
1736
+
1737
+ ret = xmlSecGCryptKeyDataRsaAdoptKeyPair(data, pub_key, priv_key);
1738
+ if(ret < 0) {
1739
+ xmlSecError(XMLSEC_ERRORS_HERE,
1740
+ xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
1741
+ "xmlSecGCryptKeyDataRsaAdoptKeyPair",
1742
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1743
+ XMLSEC_ERRORS_NO_MESSAGE);
1744
+ goto done;
1745
+ }
1746
+ pub_key = NULL; /* pub_key is owned by data now */
1747
+ priv_key = NULL; /* priv_key is owned by data now */
1748
+
1749
+ /* set key */
1750
+ ret = xmlSecKeySetValue(key, data);
1751
+ if(ret < 0) {
1752
+ xmlSecError(XMLSEC_ERRORS_HERE,
1753
+ xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
1754
+ "xmlSecKeySetValue",
1755
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1756
+ XMLSEC_ERRORS_NO_MESSAGE);
1757
+ goto done;
1758
+ }
1759
+ data = NULL; /* data is owned by key now */
1760
+
1761
+
1762
+ /* success */
1763
+ res = 0;
1764
+
1765
+ done:
1766
+ /* cleanup */
1767
+ if(n != NULL) {
1768
+ gcry_mpi_release(n);
1769
+ }
1770
+
1771
+ if(e != NULL) {
1772
+ gcry_mpi_release(e);
1773
+ }
1774
+
1775
+ if(d != NULL) {
1776
+ gcry_mpi_release(d);
1777
+ }
1778
+
1779
+ if(pub_key != NULL) {
1780
+ gcry_sexp_release(pub_key);
1781
+ }
1782
+
1783
+ if(priv_key != NULL) {
1784
+ gcry_sexp_release(priv_key);
1785
+ }
1786
+
1787
+ if(data != NULL) {
1788
+ xmlSecKeyDataDestroy(data);
1789
+ }
1790
+ return(res);
1791
+
1792
+ }
1793
+
1794
+ static int
1795
+ xmlSecGCryptKeyDataRsaXmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key,
1796
+ xmlNodePtr node, xmlSecKeyInfoCtxPtr keyInfoCtx) {
1797
+ xmlNodePtr cur;
1798
+ gcry_sexp_t pub_priv_key;
1799
+ gcry_sexp_t rsa = NULL;
1800
+ int private = 0;
1801
+ int res = -1;
1802
+ int ret;
1803
+
1804
+ xmlSecAssert2(id == xmlSecGCryptKeyDataRsaId, -1);
1805
+ xmlSecAssert2(key != NULL, -1);
1806
+ xmlSecAssert2(xmlSecKeyDataCheckId(xmlSecKeyGetValue(key), xmlSecGCryptKeyDataRsaId), -1);
1807
+ xmlSecAssert2(node != NULL, -1);
1808
+ xmlSecAssert2(keyInfoCtx != NULL, -1);
1809
+
1810
+ if(((xmlSecKeyDataTypePublic | xmlSecKeyDataTypePrivate) & keyInfoCtx->keyReq.keyType) == 0) {
1811
+ /* we can have only private key or public key */
1812
+ return(0);
1813
+ }
1814
+
1815
+ /* find the private or public key */
1816
+ pub_priv_key = xmlSecGCryptKeyDataRsaGetPrivateKey(xmlSecKeyGetValue(key));
1817
+ if(pub_priv_key == NULL) {
1818
+ pub_priv_key = xmlSecGCryptKeyDataRsaGetPublicKey(xmlSecKeyGetValue(key));
1819
+ if(pub_priv_key == NULL) {
1820
+ xmlSecError(XMLSEC_ERRORS_HERE,
1821
+ xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
1822
+ "xmlSecGCryptKeyDataRsaGetPublicKey()",
1823
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1824
+ XMLSEC_ERRORS_NO_MESSAGE);
1825
+ goto done;
1826
+ }
1827
+ } else {
1828
+ private = 1;
1829
+ }
1830
+
1831
+ rsa = gcry_sexp_find_token(pub_priv_key, "rsa", 0);
1832
+ if(rsa == NULL) {
1833
+ xmlSecError(XMLSEC_ERRORS_HERE,
1834
+ xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
1835
+ "gcry_sexp_find_token(rsa)",
1836
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1837
+ XMLSEC_ERRORS_NO_MESSAGE);
1838
+ goto done;
1839
+ }
1840
+
1841
+ /* first is Modulus node */
1842
+ cur = xmlSecAddChild(node, xmlSecNodeRSAModulus, xmlSecDSigNs);
1843
+ if(cur == NULL) {
1844
+ xmlSecError(XMLSEC_ERRORS_HERE,
1845
+ xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
1846
+ "xmlSecAddChild",
1847
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1848
+ "node=%s",
1849
+ xmlSecErrorsSafeString(xmlSecNodeRSAModulus));
1850
+ goto done;
1851
+ }
1852
+ ret = xmlSecGCryptNodeSetSExpTokValue(cur, rsa, "n", 1);
1853
+ if(ret < 0) {
1854
+ xmlSecError(XMLSEC_ERRORS_HERE,
1855
+ xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
1856
+ "xmlSecGCryptNodeSetSExpTokValue",
1857
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1858
+ "node=%s",
1859
+ xmlSecErrorsSafeString(xmlSecNodeRSAModulus));
1860
+ goto done;
1861
+ }
1862
+
1863
+ /* next is Exponent node. */
1864
+ cur = xmlSecAddChild(node, xmlSecNodeRSAExponent, xmlSecDSigNs);
1865
+ if(cur == NULL) {
1866
+ xmlSecError(XMLSEC_ERRORS_HERE,
1867
+ xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
1868
+ "xmlSecAddChild",
1869
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1870
+ "node=%s",
1871
+ xmlSecErrorsSafeString(xmlSecNodeRSAExponent));
1872
+ goto done;
1873
+ }
1874
+ ret = xmlSecGCryptNodeSetSExpTokValue(cur, rsa, "e", 1);
1875
+ if(ret < 0) {
1876
+ xmlSecError(XMLSEC_ERRORS_HERE,
1877
+ xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
1878
+ "xmlSecGCryptNodeSetSExpTokValue",
1879
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1880
+ "node=%s",
1881
+ xmlSecErrorsSafeString(xmlSecNodeRSAExponent));
1882
+ goto done;
1883
+ }
1884
+
1885
+ /* next is PrivateExponent node: write it ONLY for private keys and ONLY if it is requested */
1886
+ if(((keyInfoCtx->keyReq.keyType & xmlSecKeyDataTypePrivate) != 0) && (private != 0)) {
1887
+ cur = xmlSecAddChild(node, xmlSecNodeRSAPrivateExponent, xmlSecNs);
1888
+ if(cur == NULL) {
1889
+ xmlSecError(XMLSEC_ERRORS_HERE,
1890
+ xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
1891
+ "xmlSecAddChild",
1892
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1893
+ "node=%s",
1894
+ xmlSecErrorsSafeString(xmlSecNodeRSAPrivateExponent));
1895
+ goto done;
1896
+ }
1897
+ ret = xmlSecGCryptNodeSetSExpTokValue(cur, rsa, "d", 1);
1898
+ if(ret < 0) {
1899
+ xmlSecError(XMLSEC_ERRORS_HERE,
1900
+ xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
1901
+ "xmlSecGCryptNodeSetSExpTokValue",
1902
+ XMLSEC_ERRORS_R_XMLSEC_FAILED,
1903
+ "node=%s",
1904
+ xmlSecErrorsSafeString(xmlSecNodeRSAPrivateExponent));
1905
+ goto done;
1906
+ }
1907
+ }
1908
+
1909
+ /* success */
1910
+ res = 0;
1911
+
1912
+ done:
1913
+ if(rsa != NULL) {
1914
+ gcry_sexp_release(rsa);
1915
+ }
1916
+
1917
+ return(res);
1918
+ }
1919
+
1920
+ #endif /* XMLSEC_NO_RSA */