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