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.
- data/.gitignore +17 -0
- data/Gemfile +4 -0
- data/README.md +2 -0
- data/Rakefile +2 -0
- data/ext/xmlsec/extconf.rb +14 -0
- data/lib/xmlsec-shim.rb +27 -0
- data/lib/xmlsec-shim/version.rb +5 -0
- data/vendor/xmlsec1-1.2.18/AUTHORS +8 -0
- data/vendor/xmlsec1-1.2.18/COPYING +105 -0
- data/vendor/xmlsec1-1.2.18/ChangeLog +1810 -0
- data/vendor/xmlsec1-1.2.18/Copyright +105 -0
- data/vendor/xmlsec1-1.2.18/HACKING +199 -0
- data/vendor/xmlsec1-1.2.18/INSTALL +38 -0
- data/vendor/xmlsec1-1.2.18/Makefile.am +186 -0
- data/vendor/xmlsec1-1.2.18/Makefile.in +1155 -0
- data/vendor/xmlsec1-1.2.18/NEWS +1 -0
- data/vendor/xmlsec1-1.2.18/README +15 -0
- data/vendor/xmlsec1-1.2.18/TODO +156 -0
- data/vendor/xmlsec1-1.2.18/aclocal.m4 +1197 -0
- data/vendor/xmlsec1-1.2.18/apps/Makefile.am +84 -0
- data/vendor/xmlsec1-1.2.18/apps/Makefile.in +694 -0
- data/vendor/xmlsec1-1.2.18/apps/cmdline.c +355 -0
- data/vendor/xmlsec1-1.2.18/apps/cmdline.h +89 -0
- data/vendor/xmlsec1-1.2.18/apps/crypto.c +396 -0
- data/vendor/xmlsec1-1.2.18/apps/crypto.h +70 -0
- data/vendor/xmlsec1-1.2.18/apps/xmlsec.c +3058 -0
- data/vendor/xmlsec1-1.2.18/config.guess +1502 -0
- data/vendor/xmlsec1-1.2.18/config.h.in +134 -0
- data/vendor/xmlsec1-1.2.18/config.sub +1714 -0
- data/vendor/xmlsec1-1.2.18/configure +17363 -0
- data/vendor/xmlsec1-1.2.18/configure.in +1633 -0
- data/vendor/xmlsec1-1.2.18/depcomp +630 -0
- data/vendor/xmlsec1-1.2.18/docs/Makefile.am +65 -0
- data/vendor/xmlsec1-1.2.18/docs/Makefile.in +721 -0
- data/vendor/xmlsec1-1.2.18/docs/api/Makefile.am +209 -0
- data/vendor/xmlsec1-1.2.18/docs/api/Makefile.in +664 -0
- data/vendor/xmlsec1-1.2.18/docs/api/chapters/compiling-and-linking.sgml +252 -0
- data/vendor/xmlsec1-1.2.18/docs/api/chapters/creating-templates.sgml +325 -0
- data/vendor/xmlsec1-1.2.18/docs/api/chapters/examples.sgml +102 -0
- data/vendor/xmlsec1-1.2.18/docs/api/chapters/init-and-shutdown.sgml +104 -0
- data/vendor/xmlsec1-1.2.18/docs/api/chapters/new-crypto.sgml +487 -0
- data/vendor/xmlsec1-1.2.18/docs/api/chapters/sign-and-encrypt.sgml +286 -0
- data/vendor/xmlsec1-1.2.18/docs/api/chapters/using-contexts.sgml +138 -0
- data/vendor/xmlsec1-1.2.18/docs/api/chapters/using-keys.sgml +26 -0
- data/vendor/xmlsec1-1.2.18/docs/api/chapters/using-keysmngr.sgml +592 -0
- data/vendor/xmlsec1-1.2.18/docs/api/chapters/using-transforms.sgml +67 -0
- data/vendor/xmlsec1-1.2.18/docs/api/chapters/using-x509-certs.sgml +197 -0
- data/vendor/xmlsec1-1.2.18/docs/api/chapters/verify-and-decrypt.sgml +265 -0
- data/vendor/xmlsec1-1.2.18/docs/api/home.png +0 -0
- data/vendor/xmlsec1-1.2.18/docs/api/images/diagrams.sxd +0 -0
- data/vendor/xmlsec1-1.2.18/docs/api/images/encryption-structure.png +0 -0
- data/vendor/xmlsec1-1.2.18/docs/api/images/key.png +0 -0
- data/vendor/xmlsec1-1.2.18/docs/api/images/keysmngr.png +0 -0
- data/vendor/xmlsec1-1.2.18/docs/api/images/sign-enc-model.png +0 -0
- data/vendor/xmlsec1-1.2.18/docs/api/images/signature-structure.png +0 -0
- data/vendor/xmlsec1-1.2.18/docs/api/images/structure.png +0 -0
- data/vendor/xmlsec1-1.2.18/docs/api/images/transform.png +0 -0
- data/vendor/xmlsec1-1.2.18/docs/api/images/transforms-chain.png +0 -0
- data/vendor/xmlsec1-1.2.18/docs/api/images/verif-dec-model.png +0 -0
- data/vendor/xmlsec1-1.2.18/docs/api/index.html +307 -0
- data/vendor/xmlsec1-1.2.18/docs/api/index.sgml +43 -0
- data/vendor/xmlsec1-1.2.18/docs/api/left.png +0 -0
- data/vendor/xmlsec1-1.2.18/docs/api/right.png +0 -0
- data/vendor/xmlsec1-1.2.18/docs/api/up.png +0 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-app.html +1525 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-base64.html +357 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-bn.html +705 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-buffer.html +603 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-custom-keys-manager.html +475 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-decrypt-with-keys-mngr.html +396 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-decrypt-with-signle-key.html +326 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-dl.html +245 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-encrypt-dynamic-template.html +386 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-encrypt-template-file.html +364 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-encrypt-with-session-key.html +495 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-encryption-klasses.html +101 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-errors.html +744 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-examples-sign-dynamimc-template.html +406 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-examples-sign-template-file.html +388 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-examples-sign-x509.html +447 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-examples.html +119 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-gcrypt-app.html +578 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-gcrypt-crypto.html +1128 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-gcrypt-ref.html +107 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-gcrypt.sgml +15 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-gnutls-app.html +576 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-gnutls-crypto.html +1076 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-gnutls-ref.html +107 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-gnutls.sgml +15 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-index.html +1570 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-index.sgml +1471 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-io.html +226 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-keyinfo.html +700 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-keys.html +1161 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-keysdata.html +2067 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-keysmngr.html +743 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-list.html +643 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-membuf.html +143 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-mscrypto-app.html +747 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-mscrypto-certkeys.html +252 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-mscrypto-crypto.html +1153 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-mscrypto-keysstore.html +209 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-mscrypto-ref.html +113 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-mscrypto-x509.html +478 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-mscrypto.sgml +21 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-nodeset.html +542 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-compiling-others.html +102 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-compiling-unix.html +223 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-compiling-windows.html +138 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-compiling.html +117 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-contexts.html +229 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-custom-keys-store.html +250 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-decrypt.html +205 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-dynamic-encryption-templates.html +240 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-dynamic-signature-templates.html +250 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-encrypt.html +223 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-include-files.html +141 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-init-shutdown.html +194 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-keys-manager-sign-enc.html +307 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-keys-mngr-verify-decrypt.html +179 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-keys.html +120 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-keysmngr.html +140 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-new-crypto-functions.html +151 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-new-crypto-key-stores.html +83 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-new-crypto-keys.html +103 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-new-crypto-klasses.html +217 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-new-crypto-sharing-results.html +125 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-new-crypto-simple-keys-mngr.html +102 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-new-crypto-skeleton.html +254 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-new-crypto-transforms.html +170 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-new-crypto.html +136 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-overview.html +102 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-sign-encrypt.html +120 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-sign-x509.html +176 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-sign.html +210 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-simple-keys-store.html +177 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-structure.html +115 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-templates.html +114 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-transforms.html +154 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-verify-decrypt.html +120 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-verify-x509.html +180 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-verify.html +210 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes-x509.html +114 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-notes.html +115 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-nss-app.html +740 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-nss-bignum.html +176 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-nss-crypto.html +978 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-nss-keysstore.html +209 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-nss-pkikeys.html +211 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-nss-ref.html +115 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-nss-x509.html +467 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-nss.sgml +23 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-openssl-app.html +800 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-openssl-bn.html +170 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-openssl-crypto.html +1329 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-openssl-evp.html +184 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-openssl-ref.html +113 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-openssl-x509.html +567 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-openssl.sgml +21 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-parser.html +223 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-ref.html +149 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-reference.html +106 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-signature-klasses.html +101 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-templates.html +1290 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-transforms.html +3059 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-verify-with-key.html +318 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-verify-with-keys-mngr.html +388 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-verify-with-restrictions.html +715 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-verify-with-x509.html +369 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-version.html +143 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-x509.html +181 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-xmldsig.html +853 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-xmlenc.html +584 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-xmlsec.html +300 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec-xmltree.html +1529 -0
- data/vendor/xmlsec1-1.2.18/docs/api/xmlsec.sgml +307 -0
- data/vendor/xmlsec1-1.2.18/docs/authors.html +59 -0
- data/vendor/xmlsec1-1.2.18/docs/bugs.html +106 -0
- data/vendor/xmlsec1-1.2.18/docs/c14n.html +73 -0
- data/vendor/xmlsec1-1.2.18/docs/documentation.html +65 -0
- data/vendor/xmlsec1-1.2.18/docs/download.html +115 -0
- data/vendor/xmlsec1-1.2.18/docs/faq.html +449 -0
- data/vendor/xmlsec1-1.2.18/docs/images/bart.gif +0 -0
- data/vendor/xmlsec1-1.2.18/docs/images/libxml2-logo.png +0 -0
- data/vendor/xmlsec1-1.2.18/docs/images/libxslt-logo.png +0 -0
- data/vendor/xmlsec1-1.2.18/docs/images/logo.gif +0 -0
- data/vendor/xmlsec1-1.2.18/docs/images/openssl-logo.png +0 -0
- data/vendor/xmlsec1-1.2.18/docs/images/xmlsec-logo.gif +0 -0
- data/vendor/xmlsec1-1.2.18/docs/index.html +109 -0
- data/vendor/xmlsec1-1.2.18/docs/news.html +545 -0
- data/vendor/xmlsec1-1.2.18/docs/related.html +165 -0
- data/vendor/xmlsec1-1.2.18/docs/xmldsig-verifier.html +138 -0
- data/vendor/xmlsec1-1.2.18/docs/xmldsig.html +646 -0
- data/vendor/xmlsec1-1.2.18/docs/xmlenc.html +464 -0
- data/vendor/xmlsec1-1.2.18/docs/xmlsec-man.html +291 -0
- data/vendor/xmlsec1-1.2.18/docs/xmlsec.xsl +194 -0
- data/vendor/xmlsec1-1.2.18/examples/Makefile +40 -0
- data/vendor/xmlsec1-1.2.18/examples/Makefile.w32 +88 -0
- data/vendor/xmlsec1-1.2.18/examples/README +126 -0
- data/vendor/xmlsec1-1.2.18/examples/binary.dat +1 -0
- data/vendor/xmlsec1-1.2.18/examples/decrypt1.c +223 -0
- data/vendor/xmlsec1-1.2.18/examples/decrypt2.c +293 -0
- data/vendor/xmlsec1-1.2.18/examples/decrypt3.c +372 -0
- data/vendor/xmlsec1-1.2.18/examples/deskey.bin +1 -0
- data/vendor/xmlsec1-1.2.18/examples/encrypt1-res.xml +13 -0
- data/vendor/xmlsec1-1.2.18/examples/encrypt1-tmpl.xml +13 -0
- data/vendor/xmlsec1-1.2.18/examples/encrypt1.c +219 -0
- data/vendor/xmlsec1-1.2.18/examples/encrypt2-doc.xml +9 -0
- data/vendor/xmlsec1-1.2.18/examples/encrypt2-res.xml +14 -0
- data/vendor/xmlsec1-1.2.18/examples/encrypt2.c +244 -0
- data/vendor/xmlsec1-1.2.18/examples/encrypt3-doc.xml +9 -0
- data/vendor/xmlsec1-1.2.18/examples/encrypt3-res.xml +27 -0
- data/vendor/xmlsec1-1.2.18/examples/encrypt3.c +340 -0
- data/vendor/xmlsec1-1.2.18/examples/mywin32make.bat +18 -0
- data/vendor/xmlsec1-1.2.18/examples/rootcert.pem +25 -0
- data/vendor/xmlsec1-1.2.18/examples/rsacert.pem +83 -0
- data/vendor/xmlsec1-1.2.18/examples/rsakey.pem +27 -0
- data/vendor/xmlsec1-1.2.18/examples/rsapub.pem +9 -0
- data/vendor/xmlsec1-1.2.18/examples/sign1-res.xml +31 -0
- data/vendor/xmlsec1-1.2.18/examples/sign1-tmpl.xml +27 -0
- data/vendor/xmlsec1-1.2.18/examples/sign1.c +212 -0
- data/vendor/xmlsec1-1.2.18/examples/sign2-doc.xml +9 -0
- data/vendor/xmlsec1-1.2.18/examples/sign2-res.xml +30 -0
- data/vendor/xmlsec1-1.2.18/examples/sign2.c +248 -0
- data/vendor/xmlsec1-1.2.18/examples/sign3-doc.xml +9 -0
- data/vendor/xmlsec1-1.2.18/examples/sign3-res.xml +58 -0
- data/vendor/xmlsec1-1.2.18/examples/sign3.c +261 -0
- data/vendor/xmlsec1-1.2.18/examples/verify1.c +215 -0
- data/vendor/xmlsec1-1.2.18/examples/verify2.c +285 -0
- data/vendor/xmlsec1-1.2.18/examples/verify3.c +266 -0
- data/vendor/xmlsec1-1.2.18/examples/verify4-bad-res.xml +90 -0
- data/vendor/xmlsec1-1.2.18/examples/verify4-bad-tmpl.xml +54 -0
- data/vendor/xmlsec1-1.2.18/examples/verify4-res.xml +80 -0
- data/vendor/xmlsec1-1.2.18/examples/verify4-tmpl.xml +47 -0
- data/vendor/xmlsec1-1.2.18/examples/verify4.c +309 -0
- data/vendor/xmlsec1-1.2.18/examples/xkms-server.c +839 -0
- data/vendor/xmlsec1-1.2.18/examples/xmldsigverify.c +381 -0
- data/vendor/xmlsec1-1.2.18/include/Makefile.am +4 -0
- data/vendor/xmlsec1-1.2.18/include/Makefile.in +656 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/Makefile.am +63 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/Makefile.in +767 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/app.h +424 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/base64.h +67 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/bn.h +99 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/buffer.h +108 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/crypto.h +75 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/dl.h +56 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/errors.h +504 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/exports.h +111 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/gcrypt/Makefile.am +13 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/gcrypt/Makefile.in +564 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/gcrypt/app.h +96 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/gcrypt/crypto.h +460 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/gcrypt/symbols.h +104 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/gnutls/Makefile.am +14 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/gnutls/Makefile.in +565 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/gnutls/app.h +96 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/gnutls/crypto.h +462 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/gnutls/symbols.h +104 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/gnutls/x509.h +110 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/io.h +54 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/keyinfo.h +285 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/keys.h +278 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/keysdata.h +837 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/keysmngr.h +264 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/list.h +194 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/membuf.h +44 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/mscrypto/Makefile.am +16 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/mscrypto/Makefile.in +567 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/mscrypto/app.h +116 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/mscrypto/certkeys.h +42 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/mscrypto/crypto.h +516 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/mscrypto/keysstore.h +48 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/mscrypto/symbols.h +114 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/mscrypto/x509.h +92 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/nodeset.h +139 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/nss/Makefile.am +17 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/nss/Makefile.in +568 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/nss/app.h +118 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/nss/bignum.h +37 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/nss/crypto.h +469 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/nss/keysstore.h +46 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/nss/pkikeys.h +44 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/nss/symbols.h +106 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/nss/x509.h +91 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/openssl/Makefile.am +16 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/openssl/Makefile.in +567 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/openssl/app.h +128 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/openssl/bn.h +35 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/openssl/crypto.h +561 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/openssl/evp.h +44 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/openssl/symbols.h +123 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/openssl/x509.h +109 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/parser.h +51 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/private.h +489 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/private/Makefile.am +12 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/private/Makefile.in +563 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/private/xkms.h +121 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/private/xslt.h +34 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/skeleton/Makefile.am +13 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/skeleton/app.h +97 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/skeleton/crypto.h +40 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/skeleton/symbols.h +117 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/soap.h +130 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/strings.h +610 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/templates.h +162 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/transforms.h +994 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/version.h +61 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/version.h.in +61 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/x509.h +80 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/xkms.h +652 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/xmldsig.h +281 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/xmlenc.h +163 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/xmlsec.h +216 -0
- data/vendor/xmlsec1-1.2.18/include/xmlsec/xmltree.h +275 -0
- data/vendor/xmlsec1-1.2.18/install-sh +520 -0
- data/vendor/xmlsec1-1.2.18/ltmain.sh +8413 -0
- data/vendor/xmlsec1-1.2.18/m4/libtool.m4 +7377 -0
- data/vendor/xmlsec1-1.2.18/m4/ltoptions.m4 +368 -0
- data/vendor/xmlsec1-1.2.18/m4/ltsugar.m4 +123 -0
- data/vendor/xmlsec1-1.2.18/m4/ltversion.m4 +23 -0
- data/vendor/xmlsec1-1.2.18/m4/lt~obsolete.m4 +92 -0
- data/vendor/xmlsec1-1.2.18/man/Makefile.am +52 -0
- data/vendor/xmlsec1-1.2.18/man/Makefile.in +582 -0
- data/vendor/xmlsec1-1.2.18/man/xmlsec1-config.1 +34 -0
- data/vendor/xmlsec1-1.2.18/man/xmlsec1.1 +269 -0
- data/vendor/xmlsec1-1.2.18/missing +376 -0
- data/vendor/xmlsec1-1.2.18/scripts/build_release.sh +33 -0
- data/vendor/xmlsec1-1.2.18/scripts/change-release.sh +34 -0
- data/vendor/xmlsec1-1.2.18/scripts/push_release.sh +30 -0
- data/vendor/xmlsec1-1.2.18/scripts/remove-gtkdoclink.pl +20 -0
- data/vendor/xmlsec1-1.2.18/scripts/test_errors.pl +38 -0
- data/vendor/xmlsec1-1.2.18/scripts/test_release.sh +12 -0
- data/vendor/xmlsec1-1.2.18/src/Makefile.am +71 -0
- data/vendor/xmlsec1-1.2.18/src/Makefile.in +878 -0
- data/vendor/xmlsec1-1.2.18/src/app.c +1498 -0
- data/vendor/xmlsec1-1.2.18/src/base64.c +1034 -0
- data/vendor/xmlsec1-1.2.18/src/bn.c +1060 -0
- data/vendor/xmlsec1-1.2.18/src/buffer.c +674 -0
- data/vendor/xmlsec1-1.2.18/src/c14n.c +801 -0
- data/vendor/xmlsec1-1.2.18/src/dl.c +994 -0
- data/vendor/xmlsec1-1.2.18/src/enveloped.c +152 -0
- data/vendor/xmlsec1-1.2.18/src/errors.c +242 -0
- data/vendor/xmlsec1-1.2.18/src/gcrypt/Makefile.am +55 -0
- data/vendor/xmlsec1-1.2.18/src/gcrypt/Makefile.in +764 -0
- data/vendor/xmlsec1-1.2.18/src/gcrypt/README +9 -0
- data/vendor/xmlsec1-1.2.18/src/gcrypt/app.c +663 -0
- data/vendor/xmlsec1-1.2.18/src/gcrypt/asn1.c +602 -0
- data/vendor/xmlsec1-1.2.18/src/gcrypt/asn1.h +39 -0
- data/vendor/xmlsec1-1.2.18/src/gcrypt/asymkeys.c +1920 -0
- data/vendor/xmlsec1-1.2.18/src/gcrypt/ciphers.c +855 -0
- data/vendor/xmlsec1-1.2.18/src/gcrypt/crypto.c +315 -0
- data/vendor/xmlsec1-1.2.18/src/gcrypt/digests.c +614 -0
- data/vendor/xmlsec1-1.2.18/src/gcrypt/globals.h +30 -0
- data/vendor/xmlsec1-1.2.18/src/gcrypt/hmac.c +823 -0
- data/vendor/xmlsec1-1.2.18/src/gcrypt/kw_aes.c +593 -0
- data/vendor/xmlsec1-1.2.18/src/gcrypt/kw_des.c +607 -0
- data/vendor/xmlsec1-1.2.18/src/gcrypt/signatures.c +1490 -0
- data/vendor/xmlsec1-1.2.18/src/gcrypt/symkeys.c +441 -0
- data/vendor/xmlsec1-1.2.18/src/globals.h +25 -0
- data/vendor/xmlsec1-1.2.18/src/gnutls/Makefile.am +58 -0
- data/vendor/xmlsec1-1.2.18/src/gnutls/Makefile.in +786 -0
- data/vendor/xmlsec1-1.2.18/src/gnutls/README +6 -0
- data/vendor/xmlsec1-1.2.18/src/gnutls/app.c +998 -0
- data/vendor/xmlsec1-1.2.18/src/gnutls/asymkeys.c +455 -0
- data/vendor/xmlsec1-1.2.18/src/gnutls/ciphers.c +82 -0
- data/vendor/xmlsec1-1.2.18/src/gnutls/crypto.c +351 -0
- data/vendor/xmlsec1-1.2.18/src/gnutls/digests.c +112 -0
- data/vendor/xmlsec1-1.2.18/src/gnutls/globals.h +31 -0
- data/vendor/xmlsec1-1.2.18/src/gnutls/hmac.c +141 -0
- data/vendor/xmlsec1-1.2.18/src/gnutls/kw_aes.c +72 -0
- data/vendor/xmlsec1-1.2.18/src/gnutls/kw_des.c +51 -0
- data/vendor/xmlsec1-1.2.18/src/gnutls/signatures.c +148 -0
- data/vendor/xmlsec1-1.2.18/src/gnutls/symkeys.c +125 -0
- data/vendor/xmlsec1-1.2.18/src/gnutls/x509.c +1960 -0
- data/vendor/xmlsec1-1.2.18/src/gnutls/x509utils.c +1687 -0
- data/vendor/xmlsec1-1.2.18/src/gnutls/x509utils.h +143 -0
- data/vendor/xmlsec1-1.2.18/src/gnutls/x509vfy.c +802 -0
- data/vendor/xmlsec1-1.2.18/src/io.c +496 -0
- data/vendor/xmlsec1-1.2.18/src/keyinfo.c +1561 -0
- data/vendor/xmlsec1-1.2.18/src/keys.c +1415 -0
- data/vendor/xmlsec1-1.2.18/src/keysdata.c +1387 -0
- data/vendor/xmlsec1-1.2.18/src/keysmngr.c +745 -0
- data/vendor/xmlsec1-1.2.18/src/kw_aes_des.c +493 -0
- data/vendor/xmlsec1-1.2.18/src/kw_aes_des.h +148 -0
- data/vendor/xmlsec1-1.2.18/src/list.c +534 -0
- data/vendor/xmlsec1-1.2.18/src/membuf.c +209 -0
- data/vendor/xmlsec1-1.2.18/src/mscrypto/Makefile.am +62 -0
- data/vendor/xmlsec1-1.2.18/src/mscrypto/Makefile.in +799 -0
- data/vendor/xmlsec1-1.2.18/src/mscrypto/README +39 -0
- data/vendor/xmlsec1-1.2.18/src/mscrypto/app.c +1289 -0
- data/vendor/xmlsec1-1.2.18/src/mscrypto/certkeys.c +2615 -0
- data/vendor/xmlsec1-1.2.18/src/mscrypto/ciphers.c +937 -0
- data/vendor/xmlsec1-1.2.18/src/mscrypto/crypto.c +889 -0
- data/vendor/xmlsec1-1.2.18/src/mscrypto/csp_calg.h +105 -0
- data/vendor/xmlsec1-1.2.18/src/mscrypto/csp_oid.h +114 -0
- data/vendor/xmlsec1-1.2.18/src/mscrypto/digests.c +668 -0
- data/vendor/xmlsec1-1.2.18/src/mscrypto/globals.h +39 -0
- data/vendor/xmlsec1-1.2.18/src/mscrypto/hmac.c +963 -0
- data/vendor/xmlsec1-1.2.18/src/mscrypto/keysstore.c +620 -0
- data/vendor/xmlsec1-1.2.18/src/mscrypto/kt_rsa.c +631 -0
- data/vendor/xmlsec1-1.2.18/src/mscrypto/kw_aes.c +662 -0
- data/vendor/xmlsec1-1.2.18/src/mscrypto/kw_des.c +730 -0
- data/vendor/xmlsec1-1.2.18/src/mscrypto/mingw-crypt32.def +36 -0
- data/vendor/xmlsec1-1.2.18/src/mscrypto/private.h +130 -0
- data/vendor/xmlsec1-1.2.18/src/mscrypto/signatures.c +960 -0
- data/vendor/xmlsec1-1.2.18/src/mscrypto/symkeys.c +824 -0
- data/vendor/xmlsec1-1.2.18/src/mscrypto/x509.c +2281 -0
- data/vendor/xmlsec1-1.2.18/src/mscrypto/x509vfy.c +1406 -0
- data/vendor/xmlsec1-1.2.18/src/mscrypto/xmlsec-mingw.h +210 -0
- data/vendor/xmlsec1-1.2.18/src/nodeset.c +610 -0
- data/vendor/xmlsec1-1.2.18/src/nss/Makefile.am +57 -0
- data/vendor/xmlsec1-1.2.18/src/nss/Makefile.in +798 -0
- data/vendor/xmlsec1-1.2.18/src/nss/README +128 -0
- data/vendor/xmlsec1-1.2.18/src/nss/app.c +1598 -0
- data/vendor/xmlsec1-1.2.18/src/nss/bignum.c +163 -0
- data/vendor/xmlsec1-1.2.18/src/nss/ciphers.c +838 -0
- data/vendor/xmlsec1-1.2.18/src/nss/crypto.c +444 -0
- data/vendor/xmlsec1-1.2.18/src/nss/digests.c +576 -0
- data/vendor/xmlsec1-1.2.18/src/nss/globals.h +24 -0
- data/vendor/xmlsec1-1.2.18/src/nss/hmac.c +855 -0
- data/vendor/xmlsec1-1.2.18/src/nss/keysstore.c +485 -0
- data/vendor/xmlsec1-1.2.18/src/nss/keytrans.c +753 -0
- data/vendor/xmlsec1-1.2.18/src/nss/kw_aes.c +681 -0
- data/vendor/xmlsec1-1.2.18/src/nss/kw_des.c +663 -0
- data/vendor/xmlsec1-1.2.18/src/nss/pkikeys.c +1554 -0
- data/vendor/xmlsec1-1.2.18/src/nss/signatures.c +841 -0
- data/vendor/xmlsec1-1.2.18/src/nss/symkeys.c +440 -0
- data/vendor/xmlsec1-1.2.18/src/nss/x509.c +2223 -0
- data/vendor/xmlsec1-1.2.18/src/nss/x509vfy.c +808 -0
- data/vendor/xmlsec1-1.2.18/src/openssl/Makefile.am +56 -0
- data/vendor/xmlsec1-1.2.18/src/openssl/Makefile.in +790 -0
- data/vendor/xmlsec1-1.2.18/src/openssl/README +17 -0
- data/vendor/xmlsec1-1.2.18/src/openssl/app.c +1628 -0
- data/vendor/xmlsec1-1.2.18/src/openssl/bn.c +163 -0
- data/vendor/xmlsec1-1.2.18/src/openssl/ciphers.c +856 -0
- data/vendor/xmlsec1-1.2.18/src/openssl/crypto.c +491 -0
- data/vendor/xmlsec1-1.2.18/src/openssl/digests.c +682 -0
- data/vendor/xmlsec1-1.2.18/src/openssl/evp.c +1559 -0
- data/vendor/xmlsec1-1.2.18/src/openssl/globals.h +24 -0
- data/vendor/xmlsec1-1.2.18/src/openssl/hmac.c +857 -0
- data/vendor/xmlsec1-1.2.18/src/openssl/kt_rsa.c +876 -0
- data/vendor/xmlsec1-1.2.18/src/openssl/kw_aes.c +513 -0
- data/vendor/xmlsec1-1.2.18/src/openssl/kw_des.c +563 -0
- data/vendor/xmlsec1-1.2.18/src/openssl/signatures.c +1065 -0
- data/vendor/xmlsec1-1.2.18/src/openssl/symkeys.c +447 -0
- data/vendor/xmlsec1-1.2.18/src/openssl/x509.c +2414 -0
- data/vendor/xmlsec1-1.2.18/src/openssl/x509vfy.c +1284 -0
- data/vendor/xmlsec1-1.2.18/src/parser.c +571 -0
- data/vendor/xmlsec1-1.2.18/src/skeleton/Makefile.am +45 -0
- data/vendor/xmlsec1-1.2.18/src/skeleton/README +0 -0
- data/vendor/xmlsec1-1.2.18/src/skeleton/app.c +499 -0
- data/vendor/xmlsec1-1.2.18/src/skeleton/crypto.c +260 -0
- data/vendor/xmlsec1-1.2.18/src/skeleton/globals.h +24 -0
- data/vendor/xmlsec1-1.2.18/src/soap.c +1322 -0
- data/vendor/xmlsec1-1.2.18/src/strings.c +597 -0
- data/vendor/xmlsec1-1.2.18/src/templates.c +2091 -0
- data/vendor/xmlsec1-1.2.18/src/transforms.c +2902 -0
- data/vendor/xmlsec1-1.2.18/src/x509.c +97 -0
- data/vendor/xmlsec1-1.2.18/src/xkms.c +4981 -0
- data/vendor/xmlsec1-1.2.18/src/xmldsig.c +1795 -0
- data/vendor/xmlsec1-1.2.18/src/xmlenc.c +1339 -0
- data/vendor/xmlsec1-1.2.18/src/xmlsec.c +185 -0
- data/vendor/xmlsec1-1.2.18/src/xmltree.c +1908 -0
- data/vendor/xmlsec1-1.2.18/src/xpath.c +1148 -0
- data/vendor/xmlsec1-1.2.18/src/xslt.c +617 -0
- data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/Readme.txt +52 -0
- data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/bad-alg-enc-element-aes128-kw-3des.xml +29 -0
- data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/dh-priv-key.der +0 -0
- data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-content-3des-kw-aes192.data +9 -0
- data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-content-3des-kw-aes192.tmpl +22 -0
- data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-content-3des-kw-aes192.xml +30 -0
- data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-content-aes128-kw-3des.data +9 -0
- data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-content-aes128-kw-3des.tmpl +22 -0
- data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-content-aes128-kw-3des.xml +30 -0
- data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-content-aes192-kw-aes256.data +9 -0
- data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-content-aes192-kw-aes256.tmpl +22 -0
- data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-content-aes192-kw-aes256.xml +30 -0
- data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-content-aes256-kt-rsa1_5.data +9 -0
- data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-content-aes256-kt-rsa1_5.tmpl +24 -0
- data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-content-aes256-kt-rsa1_5.xml +63 -0
- data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-3des-ka-dh.xml +83 -0
- data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-3des-kt-rsa1_5.data +9 -0
- data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-3des-kt-rsa1_5.tmpl +23 -0
- data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-3des-kt-rsa1_5.xml +61 -0
- data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-3des-kt-rsa_oaep_sha1.data +9 -0
- data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-3des-kt-rsa_oaep_sha1.tmpl +22 -0
- data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-3des-kt-rsa_oaep_sha1.xml +63 -0
- data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-3des-kt-rsa_oaep_sha256.xml +63 -0
- data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-3des-kt-rsa_oaep_sha512.xml +63 -0
- data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-3des-kw-3des.data +9 -0
- data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-3des-kw-3des.tmpl +22 -0
- data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-3des-kw-3des.xml +29 -0
- data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-aes128-ka-dh.xml +83 -0
- data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-aes128-kt-rsa1_5.data +9 -0
- data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-aes128-kt-rsa1_5.tmpl +20 -0
- data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-aes128-kt-rsa1_5.xml +61 -0
- data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-aes128-kt-rsa_oaep_sha1.data +9 -0
- data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-aes128-kt-rsa_oaep_sha1.tmpl +22 -0
- data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-aes128-kt-rsa_oaep_sha1.xml +63 -0
- data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-aes128-kw-aes128.data +9 -0
- data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-aes128-kw-aes128.tmpl +22 -0
- data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-aes128-kw-aes128.xml +29 -0
- data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-aes128-kw-aes256.data +9 -0
- data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-aes128-kw-aes256.tmpl +22 -0
- data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-aes128-kw-aes256.xml +29 -0
- data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-aes192-ka-dh.xml +83 -0
- data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-aes192-kt-rsa_oaep_sha1.data +9 -0
- data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-aes192-kt-rsa_oaep_sha1.tmpl +22 -0
- data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-aes192-kt-rsa_oaep_sha1.xml +63 -0
- data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-aes192-kw-aes192.data +9 -0
- data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-aes192-kw-aes192.tmpl +22 -0
- data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-aes192-kw-aes192.xml +29 -0
- data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-aes256-ka-dh.xml +83 -0
- data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-aes256-kw-aes256.data +9 -0
- data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-aes256-kw-aes256.tmpl +22 -0
- data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-element-aes256-kw-aes256.xml +29 -0
- data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-text-3des-kw-aes256.data +9 -0
- data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-text-3des-kw-aes256.tmpl +23 -0
- data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-text-3des-kw-aes256.xml +32 -0
- data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-text-aes128-kw-aes192.data +9 -0
- data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-text-aes128-kw-aes192.tmpl +21 -0
- data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-text-aes128-kw-aes192.xml +28 -0
- data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-text-aes192-kt-rsa1_5.data +9 -0
- data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-text-aes192-kt-rsa1_5.tmpl +20 -0
- data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-text-aes192-kt-rsa1_5.xml +62 -0
- data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-text-aes256-kt-rsa_oaep_sha1.data +9 -0
- data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-text-aes256-kt-rsa_oaep_sha1.tmpl +22 -0
- data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/enc-text-aes256-kt-rsa_oaep_sha1.xml +64 -0
- data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/key.txt +117 -0
- data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/keys.xml +61 -0
- data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/payment.xml +9 -0
- data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/rsa-priv-key.der +0 -0
- data/vendor/xmlsec1-1.2.18/tests/01-phaos-xmlenc-3/rsa-priv-key.p12 +0 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/bad-request-name-not-supported.xml +2 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/bad-request-name.xml +10 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/compound-example-1-no-match.xml +7 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/compound-example-1.xml +51 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/keys/cert1.der +0 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/keys/cert1.pem +26 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/keys/cert2.der +0 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/keys/cert2.pem +25 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/keys/cert3.der +0 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/keys/cert3.pem +24 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/keys/create-keys.sh +73 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/keys/key1-pk8.der +0 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/keys/key1.der +0 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/keys/key1.p12 +0 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/keys/key1.pem +18 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/keys/key2-pk8.der +0 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/keys/key2.der +0 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/keys/key2.p12 +0 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/keys/key2.pem +9 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/keys/key3-pk8.der +0 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/keys/key3.der +0 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/keys/key3.p12 +0 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/keys/key3.pem +9 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/keys/openssl.cnf +106 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/keys/req2.pem +11 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/keys/req3.pem +11 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/locate-example-1-bad-service.xml +2 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/locate-example-1-no-match.xml +2 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/locate-example-1.xml +18 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/locate-example-2-no-match.xml +2 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/locate-example-2.xml +39 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/locate-opaque-client-data-no-match.xml +2 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/locate-opaque-client-data.xml +32 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/readme.txt +117 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/soap11-bad-request-name-msg-invalid.xml +9 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/soap11-bad-request-name.xml +14 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/soap11-locate-example-1-no-match.xml +6 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/soap11-locate-example-1-unsupported.xml +13 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/soap11-locate-example-1.xml +23 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/soap12-bad-request-name-msg-invalid.xml +11 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/soap12-bad-request-name.xml +14 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/soap12-locate-example-1-no-match.xml +6 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/soap12-locate-example-1-unsupported.xml +9 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/soap12-locate-example-1.xml +23 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/status-request-success.xml +2 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/status-request.xml +7 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/validate-example-1-no-match.xml +2 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xkms-01/validate-example-1.xml +65 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/README +47 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/dtd-hmac-91.dtd +1 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/dtd-hmac-91.tmpl +27 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/dtd-hmac-91.xml +27 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloped-gost.tmpl +31 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloped-gost.xml +42 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-dsa-x509chain.tmpl +18 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-dsa-x509chain.xml +87 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-expired-cert.tmpl +18 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-expired-cert.xml +85 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-md5-hmac-md5-64.tmpl +16 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-md5-hmac-md5-64.xml +15 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-md5-hmac-md5.tmpl +14 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-md5-hmac-md5.xml +13 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-md5-rsa-md5.tmpl +17 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-md5-rsa-md5.xml +85 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-ripemd160-hmac-ripemd160-64.tmpl +16 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-ripemd160-hmac-ripemd160-64.xml +15 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-ripemd160-hmac-ripemd160.tmpl +14 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-ripemd160-hmac-ripemd160.xml +13 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-ripemd160-rsa-ripemd160.tmpl +17 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-ripemd160-rsa-ripemd160.xml +85 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-rsa-x509chain.tmpl +18 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-rsa-x509chain.xml +85 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-sha1-hmac-sha1-64.tmpl +16 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-sha1-hmac-sha1-64.xml +15 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-sha1-hmac-sha1.tmpl +14 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-sha1-hmac-sha1.xml +13 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-sha1-rsa-sha1.tmpl +17 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-sha1-rsa-sha1.xml +85 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-sha224-hmac-sha224-64.tmpl +16 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-sha224-hmac-sha224-64.xml +15 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-sha224-hmac-sha224.tmpl +14 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-sha224-hmac-sha224.xml +13 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-sha224-rsa-sha224.tmpl +17 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-sha224-rsa-sha224.xml +85 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-sha256-hmac-sha256-64.tmpl +16 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-sha256-hmac-sha256-64.xml +15 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-sha256-hmac-sha256.tmpl +14 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-sha256-hmac-sha256.xml +13 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-sha256-rsa-sha256.tmpl +17 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-sha256-rsa-sha256.xml +85 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-sha384-hmac-sha384-64.tmpl +16 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-sha384-hmac-sha384-64.xml +15 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-sha384-hmac-sha384.tmpl +14 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-sha384-hmac-sha384.xml +13 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-sha384-rsa-sha384.tmpl +17 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-sha384-rsa-sha384.xml +103 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-sha512-hmac-sha512-64.tmpl +16 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-sha512-hmac-sha512-64.xml +16 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-sha512-hmac-sha512.tmpl +14 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-sha512-hmac-sha512.xml +15 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-sha512-rsa-sha512.tmpl +17 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/enveloping-sha512-rsa-sha512.xml +104 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/x509data-sn-test.tmpl +27 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/x509data-sn-test.xml +40 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/x509data-test.tmpl +31 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/x509data-test.xml +117 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/xpointer-hmac.tmpl +29 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmldsig-01/xpointer-hmac.xml +28 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmlenc-01/enc-aes128cbc-keyname.data +1 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmlenc-01/enc-aes128cbc-keyname.tmpl +11 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmlenc-01/enc-aes128cbc-keyname.xml +12 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmlenc-01/enc-aes192cbc-keyname-ref.data +1 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmlenc-01/enc-aes192cbc-keyname-ref.xml +21 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmlenc-01/enc-aes192cbc-keyname.data +1 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmlenc-01/enc-aes192cbc-keyname.tmpl +11 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmlenc-01/enc-aes192cbc-keyname.xml +12 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmlenc-01/enc-aes256cbc-keyname.data +1 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmlenc-01/enc-aes256cbc-keyname.tmpl +10 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmlenc-01/enc-aes256cbc-keyname.xml +12 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmlenc-01/enc-des3cbc-aes192-keyname.data +1 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmlenc-01/enc-des3cbc-aes192-keyname.tmpl +16 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmlenc-01/enc-des3cbc-aes192-keyname.xml +18 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmlenc-01/enc-des3cbc-keyname-content.data +7 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmlenc-01/enc-des3cbc-keyname-content.tmpl +11 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmlenc-01/enc-des3cbc-keyname-content.xml +15 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmlenc-01/enc-des3cbc-keyname-element-root.data +7 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmlenc-01/enc-des3cbc-keyname-element-root.tmpl +11 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmlenc-01/enc-des3cbc-keyname-element-root.xml +15 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmlenc-01/enc-des3cbc-keyname-element.data +9 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmlenc-01/enc-des3cbc-keyname-element.tmpl +11 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmlenc-01/enc-des3cbc-keyname-element.xml +17 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmlenc-01/enc-des3cbc-keyname.data +1 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmlenc-01/enc-des3cbc-keyname.tmpl +8 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmlenc-01/enc-des3cbc-keyname.xml +8 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmlenc-01/enc-des3cbc-keyname2.data +1 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmlenc-01/enc-des3cbc-keyname2.tmpl +10 -0
- data/vendor/xmlsec1-1.2.18/tests/aleksey-xmlenc-01/enc-des3cbc-keyname2.xml +12 -0
- data/vendor/xmlsec1-1.2.18/tests/keys/README +203 -0
- data/vendor/xmlsec1-1.2.18/tests/keys/ca2cert.der +0 -0
- data/vendor/xmlsec1-1.2.18/tests/keys/ca2cert.pem +66 -0
- data/vendor/xmlsec1-1.2.18/tests/keys/ca2key.pem +9 -0
- data/vendor/xmlsec1-1.2.18/tests/keys/cacert.der +0 -0
- data/vendor/xmlsec1-1.2.18/tests/keys/cacert.pem +72 -0
- data/vendor/xmlsec1-1.2.18/tests/keys/cakey.pem +18 -0
- data/vendor/xmlsec1-1.2.18/tests/keys/demoCA/cacert.pem +72 -0
- data/vendor/xmlsec1-1.2.18/tests/keys/demoCA/careq.pem +14 -0
- data/vendor/xmlsec1-1.2.18/tests/keys/demoCA/index.txt +6 -0
- data/vendor/xmlsec1-1.2.18/tests/keys/demoCA/newcerts/01.pem +65 -0
- data/vendor/xmlsec1-1.2.18/tests/keys/demoCA/newcerts/02.pem +93 -0
- data/vendor/xmlsec1-1.2.18/tests/keys/demoCA/newcerts/03.pem +60 -0
- data/vendor/xmlsec1-1.2.18/tests/keys/demoCA/newcerts/04.pem +60 -0
- data/vendor/xmlsec1-1.2.18/tests/keys/demoCA/newcerts/05.pem +83 -0
- data/vendor/xmlsec1-1.2.18/tests/keys/demoCA/private/cakey.pem +18 -0
- data/vendor/xmlsec1-1.2.18/tests/keys/demoCA/serial +1 -0
- data/vendor/xmlsec1-1.2.18/tests/keys/dsacert.der +0 -0
- data/vendor/xmlsec1-1.2.18/tests/keys/dsacert.pem +78 -0
- data/vendor/xmlsec1-1.2.18/tests/keys/dsakey.der +0 -0
- data/vendor/xmlsec1-1.2.18/tests/keys/dsakey.p12 +0 -0
- data/vendor/xmlsec1-1.2.18/tests/keys/dsakey.p8-der +0 -0
- data/vendor/xmlsec1-1.2.18/tests/keys/dsakey.p8-pem +8 -0
- data/vendor/xmlsec1-1.2.18/tests/keys/dsakey.pem +14 -0
- data/vendor/xmlsec1-1.2.18/tests/keys/expiredcert.der +0 -0
- data/vendor/xmlsec1-1.2.18/tests/keys/expiredcert.pem +61 -0
- data/vendor/xmlsec1-1.2.18/tests/keys/expiredkey.der +0 -0
- data/vendor/xmlsec1-1.2.18/tests/keys/expiredkey.p12 +0 -0
- data/vendor/xmlsec1-1.2.18/tests/keys/expiredkey.pem +9 -0
- data/vendor/xmlsec1-1.2.18/tests/keys/expiredreq.pem +11 -0
- data/vendor/xmlsec1-1.2.18/tests/keys/gost2001ca.der +0 -0
- data/vendor/xmlsec1-1.2.18/tests/keys/gost2001ca.pem +13 -0
- data/vendor/xmlsec1-1.2.18/tests/keys/hmackey.bin +1 -0
- data/vendor/xmlsec1-1.2.18/tests/keys/keys.xml +83 -0
- data/vendor/xmlsec1-1.2.18/tests/keys/largersacert.der +0 -0
- data/vendor/xmlsec1-1.2.18/tests/keys/largersacert.pem +100 -0
- data/vendor/xmlsec1-1.2.18/tests/keys/largersakey-win.p12 +0 -0
- data/vendor/xmlsec1-1.2.18/tests/keys/largersakey-winxp.p12 +0 -0
- data/vendor/xmlsec1-1.2.18/tests/keys/largersakey.der +0 -0
- data/vendor/xmlsec1-1.2.18/tests/keys/largersakey.p12 +0 -0
- data/vendor/xmlsec1-1.2.18/tests/keys/largersakey.p8-der +0 -0
- data/vendor/xmlsec1-1.2.18/tests/keys/largersakey.p8-pem +53 -0
- data/vendor/xmlsec1-1.2.18/tests/keys/largersakey.pem +51 -0
- data/vendor/xmlsec1-1.2.18/tests/keys/largersareq.pem +30 -0
- data/vendor/xmlsec1-1.2.18/tests/keys/merlincert.pem +20 -0
- data/vendor/xmlsec1-1.2.18/tests/keys/openssl.cnf +316 -0
- data/vendor/xmlsec1-1.2.18/tests/keys/rsacert.der +0 -0
- data/vendor/xmlsec1-1.2.18/tests/keys/rsacert.pem +61 -0
- data/vendor/xmlsec1-1.2.18/tests/keys/rsakey-win.p12 +0 -0
- data/vendor/xmlsec1-1.2.18/tests/keys/rsakey-winxp.p12 +0 -0
- data/vendor/xmlsec1-1.2.18/tests/keys/rsakey.der +0 -0
- data/vendor/xmlsec1-1.2.18/tests/keys/rsakey.p12 +0 -0
- data/vendor/xmlsec1-1.2.18/tests/keys/rsakey.p8-der +0 -0
- data/vendor/xmlsec1-1.2.18/tests/keys/rsakey.p8-pem +11 -0
- data/vendor/xmlsec1-1.2.18/tests/keys/rsakey.pem +9 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-c14n-three/Readme.txt +20 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-c14n-three/c14n-0.txt +15 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-c14n-three/c14n-1.txt +15 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-c14n-three/c14n-10.txt +15 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-c14n-three/c14n-11.txt +15 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-c14n-three/c14n-12.txt +15 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-c14n-three/c14n-13.txt +15 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-c14n-three/c14n-14.txt +15 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-c14n-three/c14n-15.txt +0 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-c14n-three/c14n-16.txt +0 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-c14n-three/c14n-17.txt +15 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-c14n-three/c14n-18.txt +15 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-c14n-three/c14n-19.txt +15 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-c14n-three/c14n-2.txt +15 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-c14n-three/c14n-20.txt +15 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-c14n-three/c14n-21.txt +15 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-c14n-three/c14n-22.txt +15 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-c14n-three/c14n-23.txt +15 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-c14n-three/c14n-24.txt +1 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-c14n-three/c14n-25.txt +0 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-c14n-three/c14n-26.txt +15 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-c14n-three/c14n-27.txt +430 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-c14n-three/c14n-3.txt +15 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-c14n-three/c14n-4.txt +15 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-c14n-three/c14n-5.txt +15 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-c14n-three/c14n-6.txt +1 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-c14n-three/c14n-7.txt +1 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-c14n-three/c14n-8.txt +15 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-c14n-three/c14n-9.txt +15 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-c14n-three/signature.xml +526 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-exc-c14n-one/Readme.txt +3 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-exc-c14n-one/exc-signature.tmpl +52 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-exc-c14n-one/exc-signature.xml +73 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/Readme.txt +63 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/certs/badb.der +0 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/certs/badb.pem +20 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/certs/balor.der +0 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/certs/balor.pem +20 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/certs/bres.pem +20 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/certs/ca.der +0 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/certs/ca.pem +20 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/certs/lugh-cert.der +0 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/certs/lugh-cert.pem +20 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/certs/lugh.der +0 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/certs/lugh.pem +12 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/certs/macha.der +0 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/certs/macha.pem +20 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/certs/merlin.der +0 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/certs/merlin.pem +21 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/certs/morigu.pem +20 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/certs/nemain.der +0 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/certs/nemain.pem +20 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/signature-enveloped-dsa.tmpl +22 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/signature-enveloped-dsa.xml +43 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/signature-enveloping-b64-dsa.tmpl +21 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/signature-enveloping-b64-dsa.xml +42 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/signature-enveloping-dsa.tmpl +18 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/signature-enveloping-dsa.xml +39 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/signature-enveloping-hmac-sha1-40.tmpl +16 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/signature-enveloping-hmac-sha1-40.xml +17 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/signature-enveloping-hmac-sha1.tmpl +14 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/signature-enveloping-hmac-sha1.xml +15 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/signature-enveloping-rsa.tmpl +18 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/signature-enveloping-rsa.xml +31 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/signature-external-b64-dsa.tmpl +20 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/signature-external-b64-dsa.xml +41 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/signature-external-dsa.tmpl +17 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/signature-external-dsa.xml +38 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/signature-keyname.tmpl +16 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/signature-keyname.xml +17 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/signature-retrievalmethod-rawx509crt.tmpl +16 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/signature-retrievalmethod-rawx509crt.xml +17 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/signature-x509-crt-crl.tmpl +17 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/signature-x509-crt-crl.xml +47 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/signature-x509-crt.tmpl +17 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/signature-x509-crt.xml +38 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/signature-x509-is.tmpl +17 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/signature-x509-is.xml +24 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/signature-x509-ski.tmpl +17 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/signature-x509-ski.xml +21 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/signature-x509-sn.tmpl +17 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/signature-x509-sn.xml +21 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/signature.tmpl +245 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmldsig-twenty-three/signature.xml +269 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/Readme.txt +117 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/bad-encrypt-content-aes128-cbc-kw-aes192.xml +42 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/decryption-transform-except.xml +83 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/decryption-transform.xml +73 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/dh0.p8 +0 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/dh1.p8 +0 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/dsa.p8 +0 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encrypt-content-aes128-cbc-kw-aes192.data +27 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encrypt-content-aes128-cbc-kw-aes192.tmpl +20 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encrypt-content-aes128-cbc-kw-aes192.xml +45 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encrypt-content-aes192-cbc-dh-sha512.xml +113 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encrypt-content-aes256-cbc-prop.data +27 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encrypt-content-aes256-cbc-prop.tmpl +18 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encrypt-content-aes256-cbc-prop.xml +42 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encrypt-content-tripledes-cbc.data +27 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encrypt-content-tripledes-cbc.tmpl +11 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encrypt-content-tripledes-cbc.xml +35 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encrypt-data-aes128-cbc.data +1 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encrypt-data-aes128-cbc.tmpl +11 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encrypt-data-aes128-cbc.xml +12 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encrypt-data-aes192-cbc-kw-aes256.data +1 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encrypt-data-aes192-cbc-kw-aes256.tmpl +20 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encrypt-data-aes192-cbc-kw-aes256.xml +22 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encrypt-data-aes256-cbc-kw-tripledes.data +1 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encrypt-data-aes256-cbc-kw-tripledes.tmpl +20 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encrypt-data-aes256-cbc-kw-tripledes.xml +22 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encrypt-data-tripledes-cbc-rsa-oaep-mgf1p-sha256.xml +46 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encrypt-data-tripledes-cbc-rsa-oaep-mgf1p.data +1 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encrypt-data-tripledes-cbc-rsa-oaep-mgf1p.tmpl +21 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encrypt-data-tripledes-cbc-rsa-oaep-mgf1p.xml +43 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encrypt-element-aes128-cbc-rsa-1_5.data +27 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encrypt-element-aes128-cbc-rsa-1_5.tmpl +19 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encrypt-element-aes128-cbc-rsa-1_5.xml +63 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encrypt-element-aes192-cbc-ref.data +36 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encrypt-element-aes192-cbc-ref.xml +42 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encrypt-element-aes256-cbc-carried-kw-aes256.xml +57 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encrypt-element-aes256-cbc-kw-aes256-dh-ripemd160.xml +122 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encrypt-element-aes256-cbc-retrieved-kw-aes256.data +40 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encrypt-element-aes256-cbc-retrieved-kw-aes256.xml +47 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encrypt-element-tripledes-cbc-kw-aes128.data +27 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encrypt-element-tripledes-cbc-kw-aes128.tmpl +20 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encrypt-element-tripledes-cbc-kw-aes128.xml +43 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encsig-hmac-sha256-dh.xml +98 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encsig-hmac-sha256-kw-tripledes-dh.xml +108 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encsig-hmac-sha256-rsa-1_5.xml +46 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encsig-hmac-sha256-rsa-oaep-mgf1p.xml +51 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encsig-ripemd160-hmac-ripemd160-kw-tripledes.tmpl +25 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encsig-ripemd160-hmac-ripemd160-kw-tripledes.xml +27 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encsig-sha256-hmac-sha256-kw-aes128.xml +27 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encsig-sha384-hmac-sha384-kw-aes192.xml +27 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/encsig-sha512-hmac-sha512-kw-aes256.xml +28 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/ids.p12 +0 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/keys.xml +42 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/plaintext.xml +24 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/rsa.p8 +0 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/rsapriv.der +0 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/rsapriv.p12 +0 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/rsapriv.p8-der +0 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/rsapriv.p8-pem +17 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/rsapriv.pem +15 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xmlenc-five/rsapub.pem +6 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xpath-filter2-three/Readme.txt +23 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xpath-filter2-three/sign-spec-c14n-0.txt +11 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xpath-filter2-three/sign-spec-c14n-1.txt +0 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xpath-filter2-three/sign-spec-c14n-2.txt +25 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xpath-filter2-three/sign-spec.tmpl +50 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xpath-filter2-three/sign-spec.xml +122 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xpath-filter2-three/sign-xfdl-c14n-0.txt +3986 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xpath-filter2-three/sign-xfdl.tmpl +4153 -0
- data/vendor/xmlsec1-1.2.18/tests/merlin-xpath-filter2-three/sign-xfdl.xml +4225 -0
- data/vendor/xmlsec1-1.2.18/tests/nss.supp +220 -0
- data/vendor/xmlsec1-1.2.18/tests/nssdb/cert8.db +0 -0
- data/vendor/xmlsec1-1.2.18/tests/nssdb/key3.db +0 -0
- data/vendor/xmlsec1-1.2.18/tests/nssdb/secmod.db +0 -0
- data/vendor/xmlsec1-1.2.18/tests/openssl.supp +63 -0
- data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/README.txt +248 -0
- data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/certs/crl.der +0 -0
- data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/certs/dsa-ca-cert.der +0 -0
- data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/certs/dsa-cert.der +0 -0
- data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/certs/enc-dsa-key.der +0 -0
- data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/certs/enc-rsa-key.der +0 -0
- data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/certs/hmackey.bin +1 -0
- data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/certs/rsa-ca-cert.der +0 -0
- data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/certs/rsa-cert.der +0 -0
- data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/document-stylesheet.xml +7 -0
- data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/document.b64 +4 -0
- data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/document.xml +6 -0
- data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/document.xsl +45 -0
- data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/signature-big.xml +39 -0
- data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/signature-dsa-detached.xml +1 -0
- data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/signature-dsa-enveloped.xml +6 -0
- data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/signature-dsa-enveloping.xml +6 -0
- data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/signature-dsa-manifest.xml +1 -0
- data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/signature-hmac-md5-c14n-enveloping.xml +6 -0
- data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/signature-hmac-sha1-40-c14n-comments-detached.xml +1 -0
- data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/signature-hmac-sha1-40-exclusive-c14n-comments-detached.xml +1 -0
- data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/signature-hmac-sha1-exclusive-c14n-comments-detached.xml +1 -0
- data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/signature-hmac-sha1-exclusive-c14n-enveloped.xml +6 -0
- data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/signature-rsa-detached-b64-transform.xml +1 -0
- data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/signature-rsa-detached-xpath-transform.xml +1 -0
- data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/signature-rsa-detached-xslt-transform-bad-retrieval-method.xml +6 -0
- data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/signature-rsa-detached-xslt-transform-retrieval-method.xml +39 -0
- data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/signature-rsa-detached-xslt-transform.xml +39 -0
- data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/signature-rsa-detached.xml +1 -0
- data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/signature-rsa-enveloped-bad-digest-val.xml +6 -0
- data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/signature-rsa-enveloped-bad-sig.xml +6 -0
- data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/signature-rsa-enveloped.xml +6 -0
- data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/signature-rsa-enveloping.xml +6 -0
- data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/signature-rsa-manifest-x509-data-cert-chain.xml +1 -0
- data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/signature-rsa-manifest-x509-data-cert.xml +1 -0
- data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/signature-rsa-manifest-x509-data-issuer-serial.xml +1 -0
- data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/signature-rsa-manifest-x509-data-ski.xml +1 -0
- data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/signature-rsa-manifest-x509-data-subject-name.xml +1 -0
- data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/signature-rsa-manifest.xml +1 -0
- data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/signature-rsa-xpath-transform-enveloped.xml +6 -0
- data/vendor/xmlsec1-1.2.18/tests/phaos-xmldsig-three/signature-rsa-~x509-data-crl.xml +1 -0
- data/vendor/xmlsec1-1.2.18/tests/testDSig.sh +875 -0
- data/vendor/xmlsec1-1.2.18/tests/testEnc.sh +411 -0
- data/vendor/xmlsec1-1.2.18/tests/testKeys.sh +69 -0
- data/vendor/xmlsec1-1.2.18/tests/testRes.sh +20 -0
- data/vendor/xmlsec1-1.2.18/tests/testXKMS.sh +129 -0
- data/vendor/xmlsec1-1.2.18/tests/testrun.sh +443 -0
- data/vendor/xmlsec1-1.2.18/tests/xmldsig2ed-tests/c14n11/xml-base-input.xml +17 -0
- data/vendor/xmlsec1-1.2.18/tests/xmldsig2ed-tests/defCan-1.tmpl +2 -0
- data/vendor/xmlsec1-1.2.18/tests/xmldsig2ed-tests/defCan-1.xml +2 -0
- data/vendor/xmlsec1-1.2.18/tests/xmldsig2ed-tests/defCan-2.tmpl +2 -0
- data/vendor/xmlsec1-1.2.18/tests/xmldsig2ed-tests/defCan-2.xml +2 -0
- data/vendor/xmlsec1-1.2.18/tests/xmldsig2ed-tests/defCan-3.tmpl +2 -0
- data/vendor/xmlsec1-1.2.18/tests/xmldsig2ed-tests/defCan-3.xml +2 -0
- data/vendor/xmlsec1-1.2.18/tests/xmldsig2ed-tests/xpointer-1-SUN.xml +21 -0
- data/vendor/xmlsec1-1.2.18/tests/xmldsig2ed-tests/xpointer-2-SUN.xml +21 -0
- data/vendor/xmlsec1-1.2.18/tests/xmldsig2ed-tests/xpointer-3-SUN.xml +21 -0
- data/vendor/xmlsec1-1.2.18/tests/xmldsig2ed-tests/xpointer-4-SUN.xml +21 -0
- data/vendor/xmlsec1-1.2.18/tests/xmldsig2ed-tests/xpointer-5-SUN.xml +21 -0
- data/vendor/xmlsec1-1.2.18/tests/xmldsig2ed-tests/xpointer-6-SUN.xml +21 -0
- data/vendor/xmlsec1-1.2.18/win32/Makefile.msvc +699 -0
- data/vendor/xmlsec1-1.2.18/win32/README.txt +168 -12
- data/vendor/xmlsec1-1.2.18/win32/configure.js +395 -0
- data/vendor/xmlsec1-1.2.18/win32/libxmlsec.def.src +25 -0
- data/vendor/xmlsec1-1.2.18/win32/mycfg.bat +21 -0
- data/vendor/xmlsec1-1.2.18/xmlsec-config.in +243 -0
- data/vendor/xmlsec1-1.2.18/xmlsec-gcrypt.pc.in +11 -0
- data/vendor/xmlsec1-1.2.18/xmlsec-gnutls.pc.in +11 -0
- data/vendor/xmlsec1-1.2.18/xmlsec-nss.pc.in +11 -0
- data/vendor/xmlsec1-1.2.18/xmlsec-openssl.pc.in +11 -0
- data/vendor/xmlsec1-1.2.18/xmlsec.pc.in +11 -0
- data/vendor/xmlsec1-1.2.18/xmlsec.spec.in +185 -0
- data/vendor/xmlsec1-1.2.18/xmlsec1-config +243 -0
- data/vendor/xmlsec1-1.2.18/xmlsec1-gcrypt.pc +11 -0
- data/vendor/xmlsec1-1.2.18/xmlsec1-gnutls.pc +11 -0
- data/vendor/xmlsec1-1.2.18/xmlsec1-nss.pc +11 -0
- data/vendor/xmlsec1-1.2.18/xmlsec1-openssl.pc +11 -0
- data/vendor/xmlsec1-1.2.18/xmlsec1.m4 +172 -0
- data/vendor/xmlsec1-1.2.18/xmlsec1.pc +11 -0
- data/vendor/xmlsec1-1.2.18/xmlsec1.spec +185 -0
- data/vendor/xmlsec1-1.2.18/xmlsec1Conf.sh +13 -0
- data/vendor/xmlsec1-1.2.18/xmlsecConf.sh.in +13 -0
- data/xmlsec-shim.gemspec +18 -0
- 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 */
|